我有一个WCF服务,我通过基于UriTemplate的URL GET调用来调用。直到昨天,一切都运行良好,现在除了400 Bad Request异常外,我什么也得不到。
我已将服务缩减为简单的WCF方法调用,该调用不需要输入参数并返回静态字符串。如果我在本地运行所有内容(即通过localhost),我的所有呼叫(包括这个简单的呼叫)都可以毫无障碍地工作。我尝试在Production中进行完全相同的调用,我得到400 Bad Request异常。如果我使用RequestFormat = WebMessageFormat.Json没有问题,但是当我切换到WebMessageFormat.Xml时,一切都会中断。从WebInvoke属性中取出所有内容也无济于事。
在ServiceContract属性中我设置了Namespace和Name,我有[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
我不知道还能做什么。
这是绑定:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service name="StandardService">
<endpoint address="http://localhost/ipghoster/GhostService.svc" behaviorConfiguration="json" binding="webHttpBinding" name="MainHttpPoint" contract="StandardService"/>
<endpoint address="mex" binding="mexHttpBinding" name="MexEP" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://www.testsite.com/StandardService.svc"/>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<webHttpBinding>
<binding openTimeout="00:10:00" sendTimeout="00:10:00" useDefaultWebProxy="false" maxReceivedMessageSize="4194304">
<readerQuotas maxDepth="32" maxStringContentLength="2048000" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="json">
<webHttp defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="false" defaultBodyStyle="Bare"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" httpGetBindingConfiguration=""/>
<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" includeExceptionDetailInFaults="true"/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="http" port="80"/>
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
</behaviors>
我实际上在这里找到了答案 - WCF Service exception error when try to host in ASP.NET Web Site
我不确定如何归功于提供该答案的人。如果你得到这个,请在这里再次发帖,这样我就可以轮流给你了。