1

以下のボックスのように構成されたサービスは、パラメーターに不一致がある場合に 404 をスローしますか? この場合、パラメーターは複合型であり、SearchJson メソッドへのすべての呼び出しは 404 を返します... (WebInvoke オプションを使用し、UriTemplate を使用しない場合でも許可されますか?)

サービスが稼働しています (「Generate your client ..?wsdl」-stuff を使用して Testpage を呼び出すことができます)

サービス メソッドは次のように構成されます。

    [OperationContract]
    [FaultContract(typeof(Exception))]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, 
            BodyStyle = WebMessageBodyStyle.WrappedRequest, 
            RequestFormat = WebMessageFormat.Json)]
    SearchResponse SearchJson(SearchRequest req);

これを解決する方法はありますか?

ところで。これは私がテストに使用するものです...どのパラメーターを変更しても、404が返されます... WebInvokeをWebGetに変更し、パラメーターとして単純型を使用する場合にのみ、別の動作をトリガーできます( string など) ...その後、405を取得します

WebRequest req = HttpWebRequest.Create("http://localhost:8800/SearchService/SearchJson");
req.Method = "POST";
req.ContentType = "application/json";
req.ContentLength = 354;
WebResponse resp = req.GetResponse();

構成は次のとおりです。

  <service name="SearchEngine.SearchService" behaviorConfiguration="HTTPGetBehavior">
    <endpoint address="SearchEngine.SearchService" 
              behaviorConfiguration="ajaxBehavior" 
              binding="webHttpBinding" 
               contract="SearchEngine.ISearchInterface" />
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8800/SearchService" />
      </baseAddresses>
    </host>
  </service>
4

2 に答える 2

1

はい、分かりました...

理由はわかりませんが、「ServiceHost」の代わりに「WebServiceHost」を使用してWCFサービスを使用すると、少なくともリクエストを取得できます..私のSearchRequestオブジェクトは空ですが、うまくいけば理由がわかります..

于 2009-07-10T14:57:53.267 に答える
0

HTTP 404 は、要求されたリソースが見つからなかったことを意味します。これはおそらく IIS から返されたものであり、呼び出しているサービスのアドレスを再確認します。

サービス自体が稼働しているので、クライアントで使用しているアドレスにタイプミスがあると思います。

于 2009-07-10T12:51:09.037 に答える