IIS上で、WCFサービスをホストするには最低限以下のものを用意します。
- svcファイル
- web.config
svcファイルは、サービスの定義が記述されているファイルです。
web.configは、そのまま構成ファイル。
svcファイルの先頭には、以下のようにしてサービスの定義を記述します。
<%@ServiceHost Language="C#" Debug="true" Service="WCFHttpHost.MyService"%>
コードビハインドファイルが存在する場合は以下のように設定します。
<%@ServiceHost Language="C#" Debug="true" Service="WCFHttpHost.MyService" CodeBehind="~/App_Code/MyService.cs" %>
svcファイルには、そのままインラインでコードを記述することもできます。
簡単にサービスのテストする場合はこのほうが楽ですが、実際ちゃんとしたサービスを
ホストする場合は、別にDLLかソースコードを作成していることがほとんどです。
ソースコードをそのまま配置する場合は、App_Codeディレクトリを作成してその下に置きます。
DLLを配置する場合は、binディレクトリを作成してその下に置きます。
web.configには、普通にサービスの設定を行います。
その際、注意点としてIIS上でホストされる場合ベースアドレスの指定は必要ありません。
IIS側にてベースアドレスが決まっていますので。それ以外は同じです。
以下、サンプルです。
今回は、インラインでソースコードを記述しています。
まずは、svcファイル.
<%@ServiceHost Language="C#" Debug="true" Service="WCFHttpHost.MyService"%> using System; using System.Collections.Generic; using System.ServiceModel; namespace WCFHttpHost { [ServiceContract] public interface IMyService { [OperationContract] string GetMessage(string name); } public class MyService : IMyService { public string GetMessage(string name) { return string.Format("Hello. '{0}'", name); } } }
次にweb.config.
ベースアドレスを設定していない点に注意。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.serviceModel> <services> <service name="WCFHttpHost.MyService" behaviorConfiguration="MyServiceBehavior"> <endpoint address="" binding="basicHttpBinding" contract="WCFHttpHost.IMyService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
後は、IIS上にアップすると配置完了です。
コンパイルは自動的に行われます。
サンプルは以下の場所にアップしてあります。
https://sites.google.com/site/gsfzero1/Home/WCFSample-012.zip?attredirects=0&d=1
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ