IIS上でRESTfulサービスとして実行したい非常に基本的なWCFサービスがあります。これがサービス契約です。
[ServiceContract]
interface IRestCameraWs
{
[OperationContract]
[WebGet(UriTemplate = "/cameras/{username}",ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
CameraInfo[] GetUserCameras(string username);
[OperationContract]
[WebGet(UriTemplate = "/liveimage/{cameraId}",ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
byte[] GetLiveImage(int cameraId);
//void GetLatestImage(int cameraId, out DateTime timestamp, out byte[] image);
[OperationContract]
[WebGet(UriTemplate = "/latestimage/{cameraId}", ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
string GetLatestImageUrl(int cameraId);
}
このコントラクトを実装するクラスがありStopMotion.Business.WCFService.RestCameraWs
ます。次に.svc
、次のマークアップを使用してWebプロジェクトにファイルを追加しました。
<%@ ServiceHost Service="StopMotion.Business.WCFService.RestCameraWsBase"%>
このサービスURLに移動すると、サービスのホームページとwsdl定義へのリンクが表示されます。しかし、web.config
ファイルに構成を追加してこのサービスを構成すると、 webHttpBinding
IISExpressから次のエラーページが表示されます。
最初に、私は構成に何か問題があると思いました。後で構成を削除し、svcファイルのファクトリを次のように変更しました
<%@ ServiceHost Factory="System.ServiceModel.Activation.WebServiceHostFactory" Service="StopMotion.Business.WCFService.RestCameraWsBase"%>
WebServiceHostFactory
はデフォルトで使用すると言われてwebHttpBinding
おり、さらに何かが必要でない限り、これを構成に追加する必要はありません。ただし、ファクトリを変更すると、IISExpressでも同じエラーページが表示されました。
ここで何が起こっているのかアイデアはありますか?