2012-04-13 10 views
0

私はRESTfulなサービスとしてIIS上で実行したい非常に基本的なWCFサービスを持っています。ここにサービス契約があります。web.configで設定が追加されたときにWebHttpBindingが動作しない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と呼ばれるこの契約を実装するクラスがあります。次に、Webプロジェクトに.svcというファイルをマークアップとともに追加しました。

<%@ ServiceHost Service="StopMotion.Business.WCFService.RestCameraWsBase"%> 

私は、このサービスのURLに移動し、それは私にサービスのホームページおよびWSDL定義へのリンクを示します。しかし、私がこのサービスを設定するために私のweb.configファイルに設定を追加すると、webHttpBinding私はIIS Expressから次のエラーページを取得します。

enter image description here

まず

は私が構成で何か間違ったことをやっていると思いました。その後、私は設定を削除し、ちょうど

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

WebServiceHostFactoryのようなSVCファイルに工場を変更し、デフォルトでwebHttpBindingを使用するように言われ、私たちはそれからより多くのものを必要とする場合を除き設定でこれを追加する必要はありません。しかし、工場を変更すると、IIS Expressでも同じエラーページが表示されました。

ここで何が起こっているのですか?

答えて

1

私のconfigsを見ると、web.configとendWebScriptでエンドポイントを宣言しなければならないことを覚えています。結果の一部は、多少のようになります。これは

+0

ありがとうございます。私はまだそれまでには達していない。しかし、遅かれ早かれ、私はこれを必要としているはずです。 +1と助けてくれてありがとう。 –

0

問題は私のメソッドのシグネチャとあった参考にすることができ

<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> 

希望。我々はのタイプのパラメータを持つことができますが、これはUriTemplateに含まれていますが、いくつかのメソッドは次のようにタイプintのパラメータを受け入れていました。私はdevのサーバー対それをデバッグするとき

[OperationContract] 
     [WebGet(UriTemplate = "/latestimage/{cameraId}",ResponseFormat = WebMessageFormat.Xml, 
      BodyStyle = WebMessageBodyStyle.Wrapped)] 
     string GetLatestImageUrl(int cameraId); 

、それは私のための行にエラーを築いたが、エラーを観察することも、DEV環境でIIS Expressでより困難であると思われます。

関連する問題