0

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ファイルに構成を追加してこのサービスを構成すると、 webHttpBindingIISExpressから次のエラーページが表示されます。

ここに画像の説明を入力してください

最初に、私は構成に何か問題があると思いました。後で構成を削除し、svcファイルのファクトリを次のように変更しました

<%@ ServiceHost Factory="System.ServiceModel.Activation.WebServiceHostFactory" Service="StopMotion.Business.WCFService.RestCameraWsBase"%>

WebServiceHostFactoryはデフォルトで使用すると言われてwebHttpBindingおり、さらに何かが必要でない限り、これを構成に追加する必要はありません。ただし、ファクトリを変更すると、IISExpressでも同じエラーページが表示されました。

ここで何が起こっているのかアイデアはありますか?

4

2 に答える 2

1

構成ファイルを見ると、web.config でエンドポイントを宣言し、動作で enableWebScript を使用する必要があったことを覚えています。結果の一部は次のようになります。

    <endpoint address="json" binding="webHttpBinding" contract="svcservice.svc.IAuthsvc" bindingConfiguration="bc.svcservice.svc.AuthsvcJSON" behaviorConfiguration="epb.svcservice.svc.AuthsvcJSON"/>      
    .
    .
    .
    .
    <behavior name="epb.svcservice.svc.AuthsvcJSON">
      <enableWebScript/>
    </behavior>

これが役立つことを願っています

于 2012-04-13T07:39:53.253 に答える