gpt4 book ai didi

c# - 以编程方式配置的 WCF 流服务出现错误响应 (400)

转载 作者:太空狗 更新时间:2023-10-30 00:09:23 24 4
gpt4 key购买 nike

如果我第一次尝试为 WCF 使用流式处理,我正在与可怕的“远程服务器返回意外响应:(400) 错误请求”响应作斗争。

跟踪查看器说这是一个 System.ServiceModel.ProtocolException 消息“从网络接收的 XML 有问题。有关更多详细信息,请参见内部异常。”内部异常类型表示“无法读取消息正文,因为它是空的。

在其他条件不变的情况下,如果我在客户端切换到缓冲模式,我就可以调试服务器代码了!

出于某种原因,我必须以编程方式配置我的服务,如下所示:

    public IUniverseFileService OpenProxy(string serviceUrl)
{
Debug.Assert(!string.IsNullOrEmpty(serviceUrl));

var binding = new BasicHttpBinding();
binding.Name = "basicHttpStream";
binding.MaxReceivedMessageSize = 1000000;
binding.TransferMode = TransferMode.Streamed;

var channelFactory =
new ChannelFactory<localhost.IUniverseFileService>(
binding,
new EndpointAddress(serviceUrl));

return channelFactory.CreateChannel();
}

服务器配置如下:

 <system.serviceModel>
<!-- BEHAVIORS -->
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<!-- SERVICES -->
<services>
<service behaviorConfiguration="serviceBehavior" name="Org.Acme.UniverseFileService">
<endpoint address=""
binding="basicHttpBinding"
name="basicHttpStream"
bindingConfiguration="httpLargeMessageStream"
contract="Org.Acme.RemoteCommand.Service.IUniverseFileService" />
<endpoint address="mex"
binding="mexHttpBinding"
bindingConfiguration="" name="mexStream"
contract="IMetadataExchange"/>
</service>
</services>
<!-- BINDINGS -->
<bindings>
<basicHttpBinding>
<binding name="httpLargeMessageStream"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
transferMode="Streamed"/>
</basicHttpBinding>
</bindings>

感谢您的帮助!

斯特凡诺

最佳答案

当我将传输模式从 Streamed 更改为 StreamedResponse 时,一切都开始工作了,如下所示:

binding.TransferMode = TransferMode.StreamedResponse;

我仍然不明白为什么这行得通而 Streamed 不行,以及为什么我能够从服务器发送和接收文件流。

关于c# - 以编程方式配置的 WCF 流服务出现错误响应 (400),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326816/

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