【问题标题】:Upgraded .NET Framework to 4.6.1 and getting socket exceptions将 .NET Framework 升级到 4.6.1 并获取套接字异常
【发布时间】:2019-07-29 14:54:22
【问题描述】:

最初我的项目在 .NET 框架 4.5 上,然后我将其迁移到 .NET 框架 4.6.1 现在,我得到了套接字异常,这在 .NET 4.5 之前不存在

错误信息为:

内部异常 --------------- 类型: System.ServiceModel.CommunicationException,System.ServiceModel, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089 消息:套接字连接被中止。这可能是由于 由于处理您的消息时出错或接收超时 被远程主机超出,或底层网络资源问题。 本地套接字超时为 '00:00:59.9900000'。

内部异常 --------------- 类型:System.Net.Sockets.SocketException,系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089 消息:现有连接被远程主机强行关闭

谁能告诉我,.NET 框架的升级是如何影响它的,应该是什么解决方案?

【问题讨论】:

  • 您是如何“迁移”应用程序的?你只是改变了项目的目标框架吗?可以分享minimal reproducible example吗?
  • 4.6.1没有问题。该错误抱怨 remote 服务器关闭了连接。
  • 我在 Visual Studio 中的属性 -> 应用程序 -> 目标框架下更改了项目的目标框架。然后构建应用程序代码。
  • @PanagiotisKanavos 但它适用于 .NET 4.5 那么为什么不能在 4.6.1 中使用呢?
  • 我们不知道,因为您不会共享出现问题的代码。我可以向你保证,其他人已经在 4.6.1 中成功使用了套接字。

标签: c# socketexception .net-4.6.1


【解决方案1】:

这可能是由服务器/主机安全设置引起的。要在调用远程数据之前更改您设置的安全设置:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

System.Net.SecurityProtocolType 枚举包含所有选项。如果您需要多个用或 (|) 将它们分开

【讨论】:

  • 赞成,因为这听起来很可能是由于选择 TLS 安全版本的默认行为发生了变化。
  • 没有任何迹象表明 OP 正在使用安全套接字。
猜你喜欢
  • 2022-08-12
  • 1970-01-01
  • 2017-09-26
  • 2016-07-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多