簡體   English   中英

WCF的字符串太長

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM