gpt4 book ai didi

c# - 使用 SSL/TLS 时出现 WCF 错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:05 25 4
gpt4 key购买 nike

我们有一个使用 http 绑定(bind)的应用程序,在客户端具有此配置:

    <binding name="SecureStreamedHttpBinding"
transferMode="Streamed"
maxReceivedMessageSize="8000000000"
maxBufferSize="65536"
sendTimeout="00:20:00">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>

服务器端的配置:

    <binding name="SecureStreamedHttpBinding_IHub"
transferMode="Streamed"
maxReceivedMessageSize="8000000000"
maxBufferSize="65536"
receiveTimeout="00:20:00">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>

客户端通过创建 ChannelFactory 然后调用 CreateChannel 打开 channel :

               ChannelFactory<IHub> channelFactory = new ChannelFactory<IHub>(endpointConfigurationName);
IHub hub = channelFactory.CreateChannel();
((IClientChannel)hub).Open();

有时,当我们尝试通过此连接传输大文件时,我们会收到来自服务器的错误消息:“远程服务器返回了意外响应:(413) 请求实体太大。”我说有时是因为似乎有许多时间/速度因素会导致错误来来去去。例如,错误似乎在高带宽机器上更为普遍。在建立连接后启动时,它们似乎不太普遍。然而,时间/速度的影响是不一致的。

如果 TLS 关闭,我们永远不会有任何问题。

我们对连接进行了 Wire Sharked,发现客户端在错误发生的大约同一时间在端口上发送“FIN”消息,但我们不知道 413 错误发生的确切时间,因为我们不知道在 Wire Shark 中看到它。所以,我们不知道这是因还是果。

我们还审查了来自 IIS 的失败请求跟踪信息,发现“请求实体太大”与当时正在传输的数据一起列出,但我们不确定如何解释我们看到的内容。

我们不知道客户为什么要签发FIN?那是正常的吗?是服务器上出现“Request Entity Too Large”错误的原因,还是相反。还是只是巧合?无论哪种方式,结果都是我们必须在此时重新启动文件传输。有没有想过错误的根本原因是什么?

预先感谢您的帮助。

最佳答案

所以,自从我接触 WCF 以来已经有一段时间了,但我想我发现了一个可能的事情。您的问题可能不是 WCF,而是 IIS。在进行一些调查后,您可能会因请求大小而遇到 SSL 证书问题。

这个其他 SO 答案是一个很好的读物,尽管它只部分涵盖了您的问题:

IIS7 - (413) Request Entity Too Large | uploadReadAheadSize

如果您遇到困难,可能值得尝试在 IIS 机器上为 SSL 启用客户端协商。从原始链接复制/粘贴代码以防出现故障:

错误消息中列出的原因之一是“Web 服务器无法为请求提供服务,因为它正在尝试协商客户端证书,但请求实体太大”。该问题的解决方案是设置 clientcertnegotiation=enable 的值。在 IIS 7 上设置此设置有点复杂。以下但通过命令提示符运行:

netsh http 显示 sslcert

注意下一组命令需要这些设置。

要删除当前设置(您不能更改现有设置,您必须删除并重新添加)netsh http 删除 sslcert :

IP地址和端口是从show命令的结果中得到的。示例:netsh http delete sslcert 0.0.0.0:443

要正确添加证书设置:netsh http 添加 sslcert ipport=: certhash= appid= certstorename= clientcertnegotiation=enable

原文:

http://forums.newatlanta.com/messages.cfm?threadid=554611A2-E03F-43DB-92F996F4B6222BC0&#top

另外,看看增加上传预读大小: http://www.iis.net/configreference/system.webserver/serverruntime

关于c# - 使用 SSL/TLS 时出现 WCF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36293386/

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