【问题标题】:Enabling net.tcp in IIS7在 IIS7 中启用 net.tcp
【发布时间】:2011-03-12 10:39:20
【问题描述】:

如何让 IIS 处理 net.tcp 连接?

【问题讨论】:

    标签: iis-7 net.tcp


    【解决方案1】:

    您需要将net.tcp 添加到您网站的启用协议中。转到 IIS 管理器,右键单击您的网站,转到“管理网站”或“管理应用程序”,然后转到“高级设置...”。在那里你会看到“启用的协议”。它可能说http。将其更改为http,net.tcp

    如果您想配置绑定,请右键单击您的网站并转到“编辑绑定...”。默认的 net.tcp 绑定是808:*

    如果您想使用 net.tcp 后面的 IIS 托管的 WCF 服务,您可能还需要检查您是否已激活所需的 Windows 功能。转到您的 Windows 功能并检查您是否已激活“Windows Communication Foundation 非 HTTP 激活”(位于“Microsoft .NET Framework 3.5.1”下)。

    激活此功能后,您将获得一些额外的 Windows 服务。如果它仍然不起作用,请检查名为 'Net.Tcp Listener Adapter' 的 Windows 服务是否正在运行(应该会自动启动,但有时它不会,这是我第一次检查的地方我的net.tcp 服务停止工作)。

    【讨论】:

    • 如果我从 IIS 中的服务协议中删除 http 并且只有 net.tcp 会怎样。服务会启动吗?
    • 如果您不希望有任何 http(s) 流量到 IIS,这将起作用。
    • 我知道这是一个旧答案,但是如果“启用的协议”没有显示为 IIS 管理器中的选项,这意味着什么?我在 Windows 7 中使用 IIS 7.5。
    • 我想您要么找错地方了,要么您没有足够的权限来执行此操作(尽管我从未听说过),或者您可能没有启用所需的 Windows 功能(也许如果您尚未启用“Windows Communication Foundation 非 HTTP 激活”,则“启用的协议”选项不可见,尽管这似乎不太可能)。
    • 我遇到的问题是 Net.Tcp 侦听器适配器服务无法完成启动......它只会挂起。添加,'Windows Communication Foundation Non-HTTP Activation'修复了这个......不知道为什么,但谢谢:)
    【解决方案2】:

    这可能对将来的某人有所帮助。我创建了一个powershell 脚本,如果您需要automate the creation of the bindings,它将派上用场。

    它会自动检查绑定是否已经存在,只有在需要时才添加。

    实际脚本

    Import-Module WebAdministration
    
    $websites = Get-ChildItem 'IIS:\Sites'
    $site = $websites | Where-object { $_.Name -eq 'Default Web Site' }
    $netTcpExists = [bool]($site.bindings.Collection | ? { $_.bindingInformation -eq '808:*' -and $_.protocol -eq 'net.tcp' })
    
    if (!$netTcpExists)
    {
        Write-Output "Net TCP binding does not exist. Creating binding now..."
        # Create the binding
        New-ItemProperty 'IIS:\Sites\Default Web Site' -name bindings -Value @{protocol="net.tcp";bindingInformation="808:*"}
    
        Write-Output "Binding created"
    }
    else
    {
        Write-Output "TCP Binding already exists"
    }
    
    Write-Output "Updating enabled protocols..."
    
    Set-ItemProperty 'IIS:\sites\Default Web Site' -name EnabledProtocols -Value "http,net.tcp"
    
    Write-Output "Enabled protocols updated"
    

    【讨论】:

    • 您必须确保在计算机上安装并启用了 .net 功能...
    • 您可以在答案中包含脚本吗?我无法访问主机,如果没有脚本的基本部分,答案将毫无用处。
    • @Alexei 是的,我应该将其包含在我的原始答案中。希望这会有所帮助
    【解决方案3】:

    最后一步对我有用。

    1. 确保在网站的“高级设置”中定义了这些协议
    2. 确保已安装以下功能
    3. 下面的服务应该正在运行
    4. 您的应用程序池应使用集成管道
    5. 关闭 IIS 管理器,重置 IIS,然后再次打开 IIS 管理器
    6. 检查 applicationHost.config 文件中的 listenerAdapters 部分(位于 C:\Windows\System32\inetsrv\config)。如果您没有看到要在绑定中使用的那些侦听器适配器,请手动添加它们 来源:Missing bindings in IIS (net.tcp, net.pipe, net.msmq, msmq.formatname)

    【讨论】:

      【解决方案4】:

      就我而言,我必须将 net.tcp 协议不仅添加到网站,还添加到它下面的应用程序(右键单击应用程序、高级设置、启用的协议)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 2010-10-16
        • 2012-04-25
        • 1970-01-01
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多