【发布时间】:2009-07-10 12:46:51
【问题描述】:
当参数不匹配时,配置如下框的服务是否会抛出 404? 在这种情况下,参数是复杂类型,每次调用 SearchJson 方法都会返回 404... (它甚至允许使用 WebInvoke 选项并且没有 UriTemplate 吗?)
服务已启动并正在运行(我可以使用“生成您的客户端 ..?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>
【问题讨论】:
标签: c# .net wcf http wcf-binding