Служба WCF с webHttpBinding; Ошибка 404 - PullRequest
1 голос
/ 10 июля 2009

Служба, которая настроена как в поле ниже, выбрасывает 404, когда есть несоответствие в параметре? В этом случае параметр является сложным типом, и каждый вызов метода SearchJson возвращает 404 ... (это даже разрешено с опцией WebInvoke и БЕЗ UriTemplate?)

Служба запущена и работает (я могу вызвать тестовую страницу с помощью "Generate your client ..? Wsdl" -stuff)

Сервисный метод настроен как:

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

Есть идеи, как решить эту проблему?

кстати. это то, что я использую для тестирования ... независимо от того, какой параметр я изменяю, возвращается 404 ... я могу вызвать другое поведение, только когда я изменяю WebInvoke на WebGet и использую простой тип как параметр (например, строку) ... тогда я получаю 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>

Ответы [ 2 ]

1 голос
/ 10 июля 2009

хорошо, я понял ...

я не знаю почему, но если я использую "WebServiceHost" вместо "ServiceHost" для использования WCF-сервиса, я могу по крайней мере получать запросы через ... мой объект SearchRequest пуст, но я надеюсь, что выясню почему ..

0 голосов
/ 10 июля 2009

HTTP 404 означает, что запрошенный ресурс не найден. Скорее всего, это возвращается из IIS, и я бы дважды проверил адрес вызываемой вами службы.

Поскольку сама служба запущена и работает, я могу представить, что в адресе, который вы используете в своем клиенте, есть опечатка.

...