【发布时间】:2012-03-05 18:05:18
【问题描述】:
我用 5 个 wcf 服务构建了一个应用程序,并将它们托管在 IIS 7.5 中。我使用 net.Tcp 端口 (808*) 的默认配置。
我不习惯在 IIS 中托管 WCF 服务(我一直托管在 Windows 服务中),我发现有趣的是,当我调用服务(使用 tcp 绑定)时,服务器上有两个不同的进程。
一个是 SMSvcHost.exe(实际使用 808 端口的那个),另一个是 w3wp.exe,我认为它正在处理我正在调用的服务器实例。
我有很多问题,所以我将一一列举:
- 是否应该使用 IIS 而不是 Windows 服务来托管 WCF 服务(tcp 绑定)?
- 我有两个进程来回答我的请求这一事实意味着我可能会影响 cpu 吗?
- 有时我的服务停止使用 tcp 绑定应答。我的客户遇到超时错误,但如果我转到http://myServer/Service1.svc,mex 会正确回答。我怀疑这个问题是由错误连接引起的,但我正确抛出异常(使用错误异常)并在我的客户端上正确捕获它们。此外,我还为每个服务实现了一个部分类以正确处理(使用 Close 或 Abort 方法)。有什么方法可以弄清楚服务停止响应时发生了什么?
- 客户端结束请求后w3wp.exe进程不应该关闭吗?即使没有人使用这些服务,它们也会保留在任务管理器中。我想这就是我的实体库日志记录在我的请求完成后锁定文件的原因。
【问题讨论】:
标签: wcf