【问题标题】:NetTcpBinding in IIS: Unknown protocol ID 'net.tcp'IIS 中的 NetTcpBinding:未知协议 ID 'net.tcp'
【发布时间】:2014-08-13 14:29:00
【问题描述】:

我正在尝试为 WCF 服务托管 NetTcp 端点,但似乎可以让它工作。每当我尝试向端点发送消息时,应用程序池都会崩溃,并且我在事件日志中收到以下错误:

尝试读取和实例化配置的 ProcessHandlerType 时出错。

异常:System.ArgumentException

消息:未知协议 ID 'net.tcp'。

StackTrace:在 System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId, IListenerChannelCallback listenerChannelCallback)

我正在使用带有 IIS 8 的 Windows Server 2012。应用程序池在 .NET 2.0 集成模式下运行。 Web 应用程序启用了 net.tcp 协议,并且托管应用程序的站点具有添加了绑定信息 808:* 的 net.tcp 绑定。 .NET Framework 3.5 启用了非 Http 激活功能,.NET Framework 4.5 启用了 TCP 激活功能。

起初我根本无法让 NetTcp-endpoint 工作,但在位于 http://support.microsoft.com/kb/2803161 的文章的帮助下,我设法至少获得了 Mex http-endpoint。 (我使用了文章的方法一)。

任何人都可以阐明可能的原因吗?帮助将不胜感激!

更新:当我将应用程序池更改为 .NET 4.0 集成模式时,它可以工作,不幸的是,由于代码库旧,这带来了其他复杂性。所以我仍然想让它在 .NET 2.0 应用程序池上运行。

【问题讨论】:

    标签: .net wcf iis windows-server-2012 net.tcp


    【解决方案1】:

    为了在 IIS 中使用 netTcpBinding 托管 WCF 服务,需要执行以下额外配置步骤:

    • 启用非 HTTP 激活
    • 将 IIS 配置为“net.tcp”作为启用的协议
    • 指定利用“net.tcp”绑定类型的站点绑定
    • 将基地址添加到 web.config 服务配置中

    以下文章提供了更多详细信息。
    NET TCP/HTTP WCF Hosted in IIS
    http://blogs.msdn.com/b/james_osbornes_blog/archive/2010/12/07/hosting-in-iis-using-nettcpbinding.aspx
    http://galratner.com/blogs/net/archive/2010/10/08/setting-up-a-nettcpbinding-enabled-wcf-service-in-iis-7.aspx

    【讨论】:

    • OP 声明您列出的大部分步骤(如果不是全部)都已完成:Web 应用程序已启用 net.tcp 协议,并且托管该应用程序的站点具有 net.tcp 绑定添加了绑定信息 808:*. .NET Framework 3.5 启用了 Non-Http 激活功能,.NET Framework 4.5 启用了 TCP 激活功能。
    • 确实,我已经超出了这些步骤。我试图通过使用简单的服务服务行为仅托管 NetTcp-endpoint 和 NetTcp-MexEndpoint 来隔离问题。我在事件日志中不断收到来自 OP 的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2011-11-13
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多