Iis 7 在IIS7中启用net.tcp
如何使IIS处理net.tcp连接?您需要将Iis 7 在IIS7中启用net.tcp,iis-7,net.tcp,Iis 7,Net.tcp,如何使IIS处理net.tcp连接?您需要将net.tcp添加到站点的已启用协议中。转到IIS管理器,右键单击您的网站,转到“管理网站”或“管理应用程序”,然后转到“高级设置…”。在这里您可以看到“启用的协议”。它可能会说http。将其更改为http,net.tcp 如果要配置绑定,请右键单击网站并转到“编辑绑定…”。默认的net.tcp绑定是808: 如果要在net.tcp之后使用IIS托管的WCF服务,您可能还需要检查是否已激活所需的Windows功能。转到您的Windows功能,并检查您已
net.tcp
添加到站点的已启用协议中。转到IIS管理器,右键单击您的网站,转到“管理网站”或“管理应用程序”,然后转到“高级设置…”。在这里您可以看到“启用的协议”。它可能会说http
。将其更改为http,net.tcp
如果要配置绑定,请右键单击网站并转到“编辑绑定…”。默认的net.tcp绑定是808:
如果要在net.tcp之后使用IIS托管的WCF服务,您可能还需要检查是否已激活所需的Windows功能。转到您的Windows功能,并检查您已激活“Windows通信基础非HTTP激活”(在微软.NETFramework 3.5.1)下找到。
激活此功能后,您将获得一些额外的Windows服务。如果它仍然不工作,请检查名为“Net.Tcp侦听器适配器”的Windows服务是否正在运行(应该会自动启动,但有时不会启动,这是我在我的一个
Net.Tcp
服务停止工作时首先检查的位置)。这可能会对将来的人有所帮助。我创建了一个powershell
脚本,如果需要,它将非常有用
它将自动检查绑定是否已经存在,并仅在需要时添加它
实际脚本
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"
最后一步对我有效
如果我从IIS中服务的协议中删除http,并且只有net.tcp,该怎么办。服务是否将被激活?如果您不希望任何http(s)流量进入IIS,这将起作用。我知道这是一个旧答案,但如果“启用的协议”在IIS管理器中不显示为选项,这意味着什么?我正在Windows 7中使用IIS 7.5。我想您可能是找错了地方,或者您没有足够的权限执行此操作(尽管我从未听说过),或者您可能没有启用所需的Windows功能(也许如果您还没有启用Windows通信基础非HTTP激活,“启用协议”选项是不可见的,尽管这似乎不太可能。我现在遇到的问题是Net。TCP侦听器适配器服务不能完成启动…它只是挂起。添加“Windows通信基础非HTTP激活”修正了这个……不知道为什么,但是谢谢:您必须确保在计算机上安装并启用了.net功能…您能在答案中包含脚本吗?主持人对我来说是不可访问的,如果没有脚本的基本部分,答案是无用的。@Alexei是的,我应该在我的原始答案中包含这一点。希望这有帮助