Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有webHttpBinding的WCF服务;404错误_C#_.net_Wcf_Http_Wcf Binding - Fatal编程技术网

C# 具有webHttpBinding的WCF服务;404错误

C# 具有webHttpBinding的WCF服务;404错误,c#,.net,wcf,http,wcf-binding,C#,.net,Wcf,Http,Wcf Binding,当参数不匹配时,配置如下框中所示的服务是否会抛出404? 在本例中,参数是复杂类型,每次调用SearchJson方法都返回404。。。 (是否允许使用WebInvoke选项而不使用UriTemplate?) 该服务已启动并正在运行(我可以使用“Generateyourclient..?wsdl”之类的东西调用测试页面) 服务方法配置为: [OperationContract] [FaultContract(typeof(Exception))] [WebInvoke(Re

当参数不匹配时,配置如下框中所示的服务是否会抛出404? 在本例中,参数是复杂类型,每次调用SearchJson方法都返回404。。。 (是否允许使用WebInvoke选项而不使用UriTemplate?)

该服务已启动并正在运行(我可以使用“Generateyourclient..?wsdl”之类的东西调用测试页面)

服务方法配置为:

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

HTTP 404表示未找到请求的资源。这很可能是从IIS返回的,我会仔细检查您正在调用的服务的地址


由于服务本身已经启动并运行,我可以想象您在客户端使用的地址中有一个输入错误。

HTTP 404表示未找到请求的资源。这很可能是从IIS返回的,我会仔细检查您正在调用的服务的地址

由于服务本身已经启动并运行,我可以想象您在客户端使用的地址中有一个输入错误。

好的,我知道了

我不知道为什么,但如果我使用“WebServiceHost”而不是“ServiceHost”来使用WCF服务,我至少可以通过。。我的SearchRequest对象是空的,但我希望能找出原因。

好的,我知道了


我不知道为什么,但如果我使用“WebServiceHost”而不是“ServiceHost”来使用WCF服务,我至少可以通过。。我的SearchRequest对象为空,但我希望能找出原因。

不,这是不可能的;)函数调用中肯定没有输入错误……不,那是不可能的;)可以肯定的是,函数调用中没有输入错误……WebServiceHost将完成所有需要的REST技巧。您将需要使用常规ServiceHost的WebServiceHost instaead(它需要SOAP格式的消息)什么是WebServiceHost我在配置文件中根本看不到服务主机?WebServiceHost将执行所有需要的奇特REST技巧。您需要使用常规ServiceHost的WebServiceHost instaead(它需要SOAP格式的消息)什么是WebServiceHost?我在配置文件中根本看不到服务主机?