WCF:System.Net.SocketException - 通常只允许每个套接字地址(协议/网络地址/端口)使用一次

2023-12-21

我有一个 WCF 服务和一个 Web 应用程序。 Web 应用程序以连续方式(也称为轮询)调用此 WCF 服务。在我们的生产环境中,我很少收到此错误。因为,这是一个内部活动,用户不知道何时抛出此错误。

无法连接到http://localhost/QAService/Service.svc http://localhost/QAService/Service.svc。 TCP 错误代码 10048:只有一种用法 每个套接字地址 (协议/网络地址/端口)是 通常允许 127.0.0.1:80。 ---> System.Net.WebException:无法 连接到远程服务器 ---> System.Net.Sockets.SocketException: 每个套接字地址只能使用一次 (协议/网络地址/端口)是 通常允许 127.0.0.1:80

我在我们的开发/质量保证环境中重现这种行为时遇到了麻烦。我已确保客户端连接在 try..catch..finally 块中关闭。仍然不明白是什么导致了这个问题..有人知道这一点吗?

Note: 我看过这个所以问题 https://stackoverflow.com/questions/828864/continuous-rapid-calls-to-wcf-service-returns-a-only-one-usage-of-each-socket-a,但似乎没有回答我的问题,所以不是重复的问题。


TCP/IP 堆栈超载。 Windows(我认为实际上所有套接字堆栈)对可以快速打开的套接字数量有限制,因为套接字在正常操作下如何关闭。每当套接字关闭时,它就会进入 TIME_WAIT 状态一段时间(240 秒 IIRC)。每次轮询时,都会消耗一个超出默认动态范围的套接字(我认为大约有 5000 个动态端口,略高于 1024),并且每次轮询结束时,该特定套接字都会进入 TIME_WAIT。如果轮询足够频繁,最终将消耗所有可用端口,这将导致 TCP 错误 10048。

一般来说,WCF 会尝试通过池化连接等方式来避免此问题。对于不通过互联网传输的内部服务,通常会出现这种情况。我不确定 wsHttp 绑定是否支持连接池,但 netTcp 绑定应该支持。我认为命名管道不会遇到这个问题。我不能说 MSMQ 绑定。

您可以使用两种解决方案来解决此问题。您可以增加动态端口范围,或减少 TIME_WAIT 的周期。前者可能是更安全的路线,但如果您消耗大量套接字(这听起来不像您的场景的情况),减少 TIME_WAIT 是一个更好的选择(或两者兼而有之。)

更改动态端口范围

  1. 打开注册表。
  2. 打开 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 项
  3. 编辑(或创建为 DWORD)MaxUserPort 值。
  4. 将其设置为更高的数字。 (即 65534)

更改 TIME_WAIT 延迟

  1. 打开注册表。
  2. 打开 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters 项
  3. 编辑(或创建为 DWORD)TcpTimedWaitDelay。
  4. 将其设置为较低的数字。值以秒为单位。 (即 60 延迟 1 分钟)

上述解决方案之一应该可以解决您的问题。如果更改端口范围后它仍然存在,我会尝试增加轮询的周期,这样它发生的频率就会降低......这将为您提供更多的余地来解决时间等待延迟。作为最后的手段,我会改变时间等待延迟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF:System.Net.SocketException - 通常只允许每个套接字地址(协议/网络地址/端口)使用一次 的相关文章

  • 数据绑定方法(例如 Eval()、XPath() 和 Bind())只能在数据绑定控件的上下文中使用

    我收到以下错误 数据绑定方法 例如 Eval XPath 和 Bind 只能在数据绑定控件的上下文中使用 但我想做的只是在 ASP NET REPEATER 控件内
  • 不支持关键字:“元数据”。?使用 MVC3 在实体框架中使用 Sql 连接

    我将 Entity Framework 4 与我的 Asp Net MVC3 应用程序一起使用 我的问题是我正在使用实体框架对我的数据库执行操作 工作正常 出于其他目的 我还使用 Sql Connection 来存储和检索数据库中的数据 我
  • 用于分页 ASP.Net 的中继器内的链接按钮

    我正在制作一个带有搜索的网页 该搜索从 MSSQL 中获取大量信息 我所做的是一个存储过程 仅返回要在网站上看到的页面 现在我正在处理分页 因为我需要显示类似于谷歌的内容 如果您在第 1 页 它们会显示前 10 页 如果您在第 19 页 它
  • 阿拉伯语查询字符串问题(???在值中)

    我在查询字符串中发送一个阿拉伯语值 当在服务器上检索它时 该值是错误的并被引号替换 例如 http server mypage aspx qs mortgage http server mypage aspx qs D9 85 D8 B1
  • WCF 模拟和 SQL 可信连接?

    我们有一个托管在 IIS7 下的服务 SQL 服务器的连接字符串设置为 受信任 为了进行身份验证 我需要在服务上设置模拟并让客户端启动模拟连接 有没有办法不设置模拟并仍然允许服务通过可信连接登录到 SQL Server 我们希望避免让客户端
  • 从 MySql 返回最后插入的 id

    我在执行以下查询时遇到了一些问题 START TRANSACTION SET LASTID 0 INSERT INTO Accounts Col1 col2 col3 col4 VALUES param1 param2 param3 par
  • 存储DotNetOpenAuth信息和用户信息检索

    这个问题有点结构 设计问题 因为我无法找出执行任务的最佳方法 在我的 MVC 应用程序中 我使用 DotNetOpenAuth 3 4 作为我的登录信息提供程序 并且仅使用标准FormsAuthentication用于饼干等 DB中当前用户
  • 来自 RAZOR 中不同文件夹的 RenderPartial

    我一直在尝试将我的 aspx 页面转换为 cshtml 并且在从另一个文件夹渲染部分页面时遇到问题 我以前做过的事 我认为等价的是 Html RenderPartial Views Inquiry InquiryList cshtml Mo
  • 如何使用 URL 将数据从 javascript 发送到 ASP.NET MVC 控制器

    我需要一些帮助 我使用 ASP NET MVC4 以及 JavaScript 和 Knockout 编写了一个小应用程序 但我无法将数据从 javascript 发送到 MVC 控制器 反之亦然 例如JS部分是这样的 JavaScript
  • SOA架构数据访问

    在我的 SOA 架构中 我有几个世界碳基金服务 我的所有服务都需要访问数据库 我应该创建一个专门的 WCF 服务来负责所有数据库访问吗 或者 如果我的每个服务都有自己的数据库访问权限 可以吗 在一个版本中 我在一项服务中只实例化了一个实体层
  • 通过 Plesk 面板托管 SQL Server 数据库时出现问题

    首先 我提供有关我的产品订阅的信息 我还订阅了一年的 Plesk Windows 托管 终极 订阅 此外我还订阅了一年的 SiteLock 我正在尝试使用 SQL Server 数据库托管 ASP NET 网站 但我很难做到这一点 首先 我
  • 动态数据表在asp.net中采用相反的顺序

    在我的网络应用程序中 我创建了 DataTable dt new DataTable dt Columns Add Month 并用日期填充列名 月 Month Column name oct 2014 July 2016 Aug 2016
  • 单选按钮文本对齐问题

    我正在 asp net 中工作 并且有单选按钮列表 我想根据需要对齐它们的文本 这是我目前拥有的 我想让它们像这样 EDIT 其次 当我单击 Ages From 单选按钮时 我会显示一个 div 如下所示 当我单击返回 All Ages 单
  • 将 SAML 令牌与 Web 服务 (wsdl) 结合使用

    我已从提供商处获得了 wsdl 文件和 pfx 我致电 IdP 并获取 SAML 令牌 现在我需要将该令牌传递给 WebService 如何使用 SAML 令牌来处理 WebService 我正在使用 NET 4 5 在以下两篇文章的帮助下
  • 使用 ASP.NET WebForms 的 jQuery DataTables 服务器端处理

    Problem 使用 ASP NET WebForms 的 jQuery DataTables 服务器端处理 解决方案 Darin Dimitrov 使用一个示例回答了这个问题 该示例进行分页和排序 但不进行任何搜索 这是我对他的工作进行的
  • 无法解析类型“Microsoft.AspNetCore.Identity.RoleManager”的服务

    我编写代码以在我的 asp net core 项目中向用户添加角色 这是我的角色控制器 public class RolesController Controller RoleManager
  • 回调和部分回发有什么区别?

    有区别吗 或者这些术语是同义词吗 抱歉 如果之前有人问过这个问题 我只能找到a之间的区别full回发和回调 我已经知道完整回发有何不同 在使用 ASP Net 2 0 时 如果这很重要的话 顺便问一下 这重要吗 或者这些术语对于任何基于 W
  • 带有 WCF BadContextToken 的 PHP Soap 客户端

    经过几天的谷歌 in 尝试 脱发 我仍然找不到解决方案 所以请帮助 简短信息 我需要使用 PHP SOAP 客户端 的 WCF 服务 它使用 wsHttpBinding ws security 并且无法设置 basicHttpBinding
  • ReportViewer“缺少 URL 参数:名称”

    在一个网络应用程序中 我正在处理 ReportViewer 时不断出现错误 缺少 URL 参数 名称 我找到了原因 但没有找到解决方案 导致报告查看器出现异常的 url Reserved ReportViewerWebControl axd
  • WCF - IsOneway 的行为不像 Oneway 操作

    我已在服务的某些方法上定义了 OneWay 属性 但它们的行为并不像 Oneway 调用 我的客户等待呼叫完成并从服务返回 我假设单向操作是非阻塞操作 并且客户端不关心被调用函数会发生什么 它只是调用并忘记它 这是对的吗 问题 调用 Ope

随机推荐