[英]Too long string for WCF
我正在嘗試通過WCF發送長字符串,大約64k字符長。 當發送一個長字符串時,我得到HTTP錯誤400.但是當我發送更短的字符串時,一切正常。 這是我使用的WCF接口和app.config。
我的留言合同:
[MessageContract]
public class MessageClass
{
[MessageHeader(MustUnderstand = true)]
public string id;
[MessageBodyMember(Order=1)]
public string realMessage; // Long string
}
我試圖通過上升值來更改app.config設置:
<bindings>
<basicHttpBinding>
<binding
name="ws"
transferMode="Streamed"
messageEncoding="Mtom"
maxReceivedMessageSize="10067108864">
<readerQuotas
maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
還有其他價值我應該改變嗎?
您還需要在綁定上設置“maxBufferSize”和“maxBufferPoolSize”:
<bindings>
<basicHttpBinding>
<binding
name="ws"
transferMode="Streamed"
messageEncoding="Mtom"
maxReceivedMessageSize="10067108864"
maxBufferSize="500000" maxBufferPoolSize="500000">
<readerQuotas
maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
在WCF的標准綁定中,這些也默認為64K。 但是,既然你正在使用“transferMode = Streamed”,這真的不應該是一個問題 - 也許還有其他事情發生。 如何增加sendTimeout
設置? 也許你的服務只是花了太長時間來回應。
渣
請參閱basicHttpBinding @http: //msdn.microsoft.com/en-us/library/ms731361.aspx的maxReceivedMessageSize屬性。 Coindicentally,默認值為65,536 KB。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.