我有一个 WCF 服务,可以在本地、服务器和 Azure 上正常工作。但是,我正在尝试将相同的代码部署到 RackSpace 站点(共享托管环境正在运行 .NET 4.0。IIS7 和 Windows Server 2008),并且当服务返回响应时出现以下错误:
Message:[System.ServiceModel.ProtocolException] = {"响应消息的内容类型text/html与绑定的内容类型(text/xml;charset=utf-8)不匹配。如果使用自定义编码器,则为确保 IsContentTypeSupported 方法正确实现。资源的前 1024 字节...
InnerException:_innerException = {"远程服务器返回错误:(500) Internal Server Error."}
问题是,虽然响应是错误的,但该方法确实成功接收数据并将其传递到数据库中,所以问题似乎出在从 WCF 方法返回到客户端应用程序的响应中。有没有人遇到过这个?我知道共享主机的信任级别可能是罪魁祸首 - 但我尝试过的任何事情似乎都无法减轻我遇到的错误。
这是我在使用 WCF 服务的 Web 应用程序上的配置:
绑定:
<binding name="BasicHttpBinding_IAccountService" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
和端点:
<client>
<endpoint address="http://sitename.com/Services/AccountService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAccountService"
contract="AccountService.IAccountService" name="BasicHttpBinding_IAccountService" /></client>
这是使用“添加服务引用”时生成的默认绑定/端点
托管 WCF 服务的应用程序不使用任何自定义配置,但这是其 Web.Config 的行为部分:
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />