我在 Windows Server 08 sp2 上的 IIS7 中托管 WCF 服务。该服务托管为自己的网站,并通过 NET.TCP 端点公开。在发出重新启动/iisreset 命令之前,该服务工作正常。
重启或 iisreset 后,当我进行任何服务调用时,我收到以下错误: 'System.ServiceModel.EndpointNotFoundException: 无法发送消息,因为端点地址 'net.tcp://[website]/[service_name].svc' 的服务对于该地址的协议(protocol)不可用..'
服务器的事件日志显示以下错误: '尝试读取和实例化配置的 ProcessHandlerType 时发生错误。 异常:System.ArgumentException 消息:未知协议(protocol) ID“NET.TCP”。 StackTrace: 在 System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId, IListenerChannelCallback listenerChannelCallback) '
问题: 我该如何解决?为什么在 iisreset 后 NET.TCP 协议(protocol)被禁用?这是一个错误吗?我是否缺少某些配置?
IIS 设置细节: - 服务器 08 和 08 R2 - 绑定(bind):http、NET.TCP (808:*) - EnabledProtols:http、NET.TCP。 - 站点的 appPool 的身份设置为特定用户。
此处提供示例代码:http://drop.io/wcfTcpSampleService
谢谢
最佳答案
已解决。问题是区分大小写。在 Web 应用程序的 AdvancedSettings 中,EnabledProtocols 字段必须是小写的,即“net.tcp”(我刚刚从 MS 支持那里了解到这一点)。
我假设(愚蠢地)'NET.TCP' 应该是大写的,因为 EnabledProtocols 字段的描述(“...添加这些值,例如 NET.TCP...”)。
奇怪的、未知的问题是为什么它会第一次与“NET.TCP”一起工作,但这是另一个问题。
感谢大家的帮助。
关于wcf - restart/iisreset 禁用 NET.TCP 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049811/