gpt4 book ai didi

c# - WCF 的字符串太长

转载 作者:行者123 更新时间:2023-11-30 19:51:14 24 4
gpt4 key购买 nike

我正在尝试通过 WCF 发送一个长字符串,大约 64k 个字符长。发送长字符串时,我收到 HTTP 错误 400。但是当我发送较短的字符串时,一切正常。这是我使用的 WCF 接口(interface)和 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>

还有其他我应该更改的值吗?

最佳答案

您还需要在绑定(bind)上设置“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 的标准绑定(bind)中,它们也默认为 64K。但是,由于您使用的是“transferMode=Streamed”,这真的不应该成为问题 - 也许还有其他事情正在发生。增加 sendTimeout 设置怎么样?也许您的服务响应时间有点长。

马克

关于c# - WCF 的字符串太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com