6

我在 Windows Server 08 sp2 上的 IIS7 中托管 WCF 服务。该服务作为其自己的网站托管,并通过 NET.TCP 端点公开。在发出重新启动/iisreset 命令之前,该服务运行良好。

重新启动或 iisreset 后,当我进行任何服务调用时,我收到以下错误:'System.ServiceModel.EndpointNotFoundException: The message could not be dispatched because the service at the endpoint address 'net.tcp://[website]/[ service_name].svc'对于地址的协议不可用..'

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

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

IIS 设置详细信息: - Server 08 和 08 R2 - 绑定:http、NET.TCP (808:*) - EnabledProtols:http、NET.TCP。- 站点的 appPool 的身份设置为特定用户。

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

谢谢

4

4 回答 4

9

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

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

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

谢谢你帮助大家。

于 2010-06-29T19:46:15.657 回答
1

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

更新

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

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

于 2010-06-28T18:01:25.680 回答
0

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

于 2010-06-25T22:59:09.653 回答
0

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

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

于 2010-06-29T02:31:42.107 回答