0

以下のコード スニペットに従って、WCF Rest サービスがあります。

[ServiceContract]
public interface IService
{
     [OperationContract]
        [WebInvoke(UriTemplate="/SaveList/Foos/",Method="POST")]
        bool SaveList(List<Foo> myFoos);

}

このサービスは自己ホスト型サービスであり、webHttpBinding でエンドポイントを公開します。次のコード スニペットを持つクライアント コンソール アプリケーションがあります。

public void Send()
{
   var myObj = new Foo{Id=1, Name="Test"};
   using (WebChannelFactory<OurService.Services.IOurService> cf = new WebChannelFactory<IOurService>("WebHttpBinding_IService"))
   {
       IUtranetService channel = cf.CreateChannel();
       using (new OperationContextScope(channel as IContextChannel))
       {
           var status = channel.SaveList(new[] { myObj });

        }

    }

} 

クライアント コードは次のように例外をスローします。メッセージを受け入れることができる "http://localhost:1133/Service/SaveList" でリッスンしているエンドポイントがありませんでした。

どこが間違っているのかわかりません。UriTemplate をサービス コントラクトから削除すると、クライアントは正しい応答を返します。

どんな助けでも大歓迎です。

よろしくルチトラ

4

1 に答える 1

1

URI テンプレートが正しくありません。これを次のように変更する必要があります。

 [WebInvoke(UriTemplate="/SaveList/Foos/SaveList",Method="POST")] 

メソッド名は自動的に追加されません。

また、私が残したコメントによると参考までに、 Method="Post" は必要ありません

于 2012-08-09T10:32:03.900 に答える