.net 与发送拉丁特殊字符后WCF标头中的HTTP Content Length 400错误不一致
我将WCF与.Net 4.0一起使用,其中包含安全模式TransportWithMessageCredential over https的basicHttpBinding的所有默认值。当我从发送特殊字符链接的客户端进行web方法调用时,该方法成功,但下一次方法调用都会出现404错误,没有进一步的信息,并且在跟踪日志中显示以下错误: 可用字节数与HTTP协议不一致 内容长度标题。可能出现了网络错误或 客户端可能正在发送无效的请求 因为我使用的是默认值,所以文本编码是utf-8。我在IIS7和IIS7.5上进行了测试。使用IIS Express的本地计算机上也会出现同样的问题。不寻常的是,这个特殊的字符被写入服务器并成功地写入数据库,然后WCF只是一种故障。我必须重新设置WCF的网站才能在服务器上重新开始工作 以下是失败的测试代码:.net 与发送拉丁特殊字符后WCF标头中的HTTP Content Length 400错误不一致,.net,wcf,iis-7,.net,Wcf,Iis 7,我将WCF与.Net 4.0一起使用,其中包含安全模式TransportWithMessageCredential over https的basicHttpBinding的所有默认值。当我从发送特殊字符链接的客户端进行web方法调用时,该方法成功,但下一次方法调用都会出现404错误,没有进一步的信息,并且在跟踪日志中显示以下错误: 可用字节数与HTTP协议不一致 内容长度标题。可能出现了网络错误或 客户端可能正在发送无效的请求 因为我使用的是默认值,所以文本编码是utf-8。我在IIS7和IIS
using (ToursServiceClient client = new ToursServiceClient())
{
client.ClientCredentials.UserName.UserName = "test";
client.ClientCredentials.UserName.Password = "test";
Tour tour = new Tour();
tour.Customer = new Customer();
tour.Customer.FirstName = "ñ";
InsertTourResult insertTourResult = client.InsertTour(tour);
Tour insertedTour = client.GetTourByTourID(insertTourResult.TourID);
}
此代码在调用以下对象时失败:
client.GetTourByTourID(insertTourResult.TourID);
如果我更改此代码行,则此代码成功:
tour.Customer.FirstName = "ñ";
致:
虽然我只使用默认绑定,但为了完整起见,我将在此处列出它们:
<binding name="BasicHttpBinding_ToursService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
非常感谢您的帮助。
谢谢
泰勒
<binding name="BasicHttpBinding_ToursService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>