wcf - 优雅地终止 WCF 服务 - 完成所有打开的 session 并限制新 session

标签 wcf session windows-services

我有一个我编写的 WCF 服务,它托管在 Windows 服务中。它在 PerSession 模式下运行。该服务允许客户端通过该服务远程打开文件、更改文件和关闭文件。到目前为止,一切都非常顺利。

当 Windows 服务停止时,我希望 WCF 服务不接受任何新 session ,但允许已连接的客户端完成其当前 session 并工作(在合理的期限/超时内)。

实现这一目标的最佳方法是什么?

最佳答案

基本上,调用ServiceHost.Close()将完成此操作 - 它将让所有当前正在运行的请求运行完成,但如果有序关闭正在进行中,新请求将被拒绝。

您为服务配置的绑定(bind)上有一个“CloseTimeout”设置 - 它控制 WCF 运行时允许运行请求在正确关闭之前需要多长时间。如果发生超时,仍在运行的请求将被终止。
ServiceHost.Abort()另一方面,方法是大锤的数字等价物——所有正在运行的请求立即终止,主机关闭。

在客户端,你有相同的 .Close().Abort()客户端代理上的方法相同。

关于wcf - 优雅地终止 WCF 服务 - 完成所有打开的 session 并限制新 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664935/

相关文章:

wcf - 关闭具有线程的 Windows 服务

wcf - 使用 MakeCert 创建有效的生产客户端证书以对 WCF 进行身份验证

c# - 使用 WCF 生成 JSON 数组

具有不想工作的 WCF 服务的 WCF 新手(我认为是元数据)

php - 在 Session 中存储变量

javascript - 每当我点击网站内的页面链接时,我都会注销,如何修复?

c# - 登录 C# Windows 服务

windows - Windows服务自动部署-工具

wcf - 在 WCF REST 服务上设置 Raygun

php - PHP session 的 iPhone 问题