restart / iisreset是否禁用NET.TCP协议?

时间:2010-06-15 23:31:14

标签: wcf iis-7 tcp was

我在Windows Server 08,sp2上的IIS7中托管WCF服务。该服务作为自己的网站托管,并通过NET.TCP端点公开。该服务完美运行,直到发出restart / iisreset命令。

重启或iisreset后,当我进行任何服务调用时,收到以下错误: 'System.ServiceModel.EndpointNotFoundException:无法分派消息,因为端点地址'net.tcp:// [website] / [service_name] .svc'上的服务不可用于地址协议..'

服务器的事件日志显示以下错误: '尝试读取和实例化已配置的ProcessHandlerType时发生错误。 例外:System.ArgumentException 消息:未知协议ID“NET.TCP”。 StackTrace:在System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId,IListenerChannelCallback listenerChannelCallback)'

问题: 我该如何解决?为什么在iisreset之后禁用NET.TCP协议?这是一个错误吗?我错过了一些配置吗?

IIS设置详细信息: - 服务器08和08 R2 - 绑定:http,NET.TCP(808:*) - EnabledProtols:http,NET.TCP。 - 网站appPool的标识设置为特定用户。

此处提供示例代码:http://drop.io/wcfTcpSampleService

由于

4 个答案:

答案 0 :(得分:9)

解决。问题是区分大小写。在Web应用程序的AdvancedSettings中,EnabledProtocols字段必须是小写,即'net.tcp'(我刚刚从MS支持中学到了这一点)。

我假设(愚蠢地)'NET.TCP'应该是大写的,因为EnabledProtocols字段的描述(“...添加那些值,例如NET.TCP ......”)。

奇怪的,未知的问题是它第一次与“NET.TCP”一起使用,但这是另一个问题。

感谢大家的帮助。

答案 1 :(得分:1)

您可以为NET.TCP和HTTP协议使用不同的端口吗?

<强>更新

在我的电脑上,一切正常,我尝试了重启和iisreset。我已经在同一个地方上传了你的项目,包括二进制文件(使用Visual Web Developer 2010 Express),以及IIS设置的屏幕截图。应用程序池设置为.NET 4.0集成。

iis7 http://www.freeimagehosting.net/uploads/1a727d66ce.png

答案 2 :(得分:0)

你真的需要做一个完整的IISRESET吗?我相信当需要完全重新启动网络托管的应用程序时,“现代”推荐的方法是回收应用程序池,因为:iisapp /a <App_Pool_ID> /r(Windows 2003)或appcmd recycle apppool /apppool.name:<App_Pool_Name>(Windows 2008)。

答案 3 :(得分:0)

您安装了哪些版本的.NET(或者您曾经安装过)?

当从.NET 4 RC转到RTM时,我遇到了一个非常类似的问题,因为TCP服务正在使用RC安装中的dll(不再存在)导致服务停止。

相关问题