gpt4 book ai didi

WCF 绑定(bind)配置仅作为默认应用,但命名失败

转载 作者:行者123 更新时间:2023-12-01 06:41:28 26 4
gpt4 key购买 nike

WCF 绑定(bind)和流传输模式有一个有趣的问题,我们无法解决:

我们有一个配置为流传输模式的 WCF 端点。端点接收的消息比默认大小(~65 KB)大得多。因此,我们在绑定(bind)标签的 maxReceivedMessageSize 属性中指定了更大的消息大小。

问题是当我们通过端点标签上的 bindingConfiguration 属性和绑定(bind)标签上的 name 属性将端点和绑定(bind)配对时,我们收到以下错误:“远程服务器返回错误:(400) 错误请求”。

一旦我们删除了 bindingConfiguration 和 name 这两个属性,它就可以正常工作。

这是服务的定义端点 :

    <service name="Services.DocumentService" behaviorConfiguration="ServiceBehavior">
<endpoint contract="ServiceContracts.IDocumentService" address="DocumentService"
binding="basicHttpBinding" name="basicHttpBinding"
bindingConfiguration="BindingConfiguration" <---- when this goes away
behaviorConfiguration="ServiceEndpointBehavior"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/Documents/"/>
</baseAddresses>
</host>
</service>

这里是 绑定(bind)配置 :
    <binding  
name="BindingConfiguration" <---- and when this goes away
transferMode="Streamed" maxReceivedMessageSize="2147483647" >
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>

所以它只能作为默认绑定(bind)(没有明确命名的键)。奇怪的是,我们能够通过服务主机上的反射来验证绑定(bind)配置在两种情况下都被实际应用(maxReceivedMessageSize 设置正确)。这可能是 WCF 中的错误吗?

该服务是自托管的。

任何想法都非常感谢?

最佳答案

当您删除 bindingConfiguration="BindingConfiguration"时,它使用默认值而不是绑定(bind)配置中的值。

区别在于:

transferMode="Streamed"

默认情况下,传输模式是缓冲的,因此如果客户端期望缓冲并且服务器使用流式传输,那么您会收到错误的请求错误。

关于WCF 绑定(bind)配置仅作为默认应用,但命名失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910566/

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