私はWCFを初めて使用します。サンプルのWCFサービスを開発しました。私のサービスはbasicHttp
バインディングを使用しています。
WASを使用してローカルIIS 7.5でサービスをホストし、正常に機能します。次に、Webサイトでサービスをホストします。
私はGoogleを検索しますが、それらのほとんどはIISのローカルホストでホストされています。どうすればいいのか教えてください。チュートリアルまたはステップバイステップガイドを参照することをお勧めします。
基本的に2つの選択肢があると思います。
オプション1-「bin」デプロイ(推奨オプション)
.\bin
フォルダーにコピーします*.svc
ファイルを作成しますweb.config
を追加して、エンドポイントやサービス構成などを定義します。これで、WCFサービスは、Webサイトのベースアドレスに加えて、*.svc
ファイルの名前でアクセスできるようになります。
http://myserver/someweb/Myservice.svc
*.svc
は次のようになります。
<%@ ServiceHost Language="C#" Debug="true"
Service="WCF_Simple_Service.HelloIndigoService" %>
Service=
属性は、サービスを実装するクラスを示します-名前空間で完全修飾されています。
オプション2-App_Code
にデータを入力します
*.cs
ファイルを.\App_Code
フォルダーに直接配置します*.svc
ファイルを作成しますweb.config
を追加して、エンドポイントやサービス構成などを定義します。これで、WCFサービスは、Webサイトのベースアドレスに加えて、*.svc
ファイルの名前でアクセスできるようになります。
http://myserver/someweb/Myservice.svc
*.svc
は次のようになります。
<%@ ServiceHost Language="C#" Debug="true"
Service="Service"
CodeBehind="~/App_Code/Service.cs" %>
単純なサンプルweb.config
は次のようになります。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WithDebug">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="WithDebug">
<endpoint
address=""
binding="basicHttpBinding"
contract="SimpleWCF.IHelloIndigoService" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
基本的に<service>
タグを定義します。また、name=
は、サービスを実装するクラスを示します。名前空間で完全修飾されています。少なくとも1つのエンドポイントが含まれている必要があります(「mex」エンドポイントはオプションです)が、特に開発とテストに非常に役立ちます。これにより、クライアントはサービスを「発見」し、サービスの説明を取得して、サービスとインターフェイスできるようになります。
サービスがIISにデプロイされると、WCFに無料で付属する WCF Test Client 、または一般的な SoapUI などのツールを使用してサービスの動作を確認できます。目的SOAPテストユーティリティ(無料版を使用)。
古いスレッド、誰かがそれを見つけた場合...しかし、*。svcの代わりに、global.asaxで作成することもできます。
static Global()
{
RouteTable.Routes.Add(new ServiceRoute("ExternalServices/SOAP/test", new ninjectServiceHostFactory(), typeof(testService)));
}
マークの答えに加えて、以下のように* .svcファイルにファクトリ属性を追加する場合、メインプロジェクトにあるweb.configファイルの内容を変更する必要はありません。もう一度繰り返します。 web.configファイルに大きな混乱はありません。そのままにしておきます。これは、svcファイルのFactory属性がすべてを処理するという事実によるものです。
<%@ ServiceHost Language="C#" Debug="true" Service="WCF_Simple_Service.HelloIndigoService" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
ただし、サービスを呼び出すと、エンドポイントが見つからないというエラーが発生することを言わなければなりません。ただし、サービスでメソッドを呼び出すと、すべて機能します。安らかなwcfでテスト済み。