WCF error with net.tcp "The service endpoint failed to listen on the URI because access was denied
在我属于管理员组的 Windows 8.1 计算机上托管 WCF Net.Tcp 服务时出现以下错误:
服务端点未能侦听 URI 'net.tcp://localhost:9001/dataservice',因为访问被拒绝。验证当前用户是否在 SMSvcHost.exe.config 的相应 allowAccounts 部分中被授予访问权限。
我什至按照建议将用户添加到配置中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?xml version="1.0" encoding="utf-8"?> <!-- The configuration file for SMSvcHost.exe --> <configuration> <runtime> <gcConcurrent enabled="false" /> </runtime> <system.serviceModel> <!-- SMSvcHost ETW traces are redirected by default to an etwProviderId different from WCF's default. To trace to the default provider, remove the etwProviderId attribute below. --> <diagnostics performanceCounters="Off" etwProviderId="{f18839f5-27ff-4e66-bd2d-639b768cf18b}"/> </system.serviceModel> <system.serviceModel.activation> <net.tcp listenBacklog="10" maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10" teredoEnabled="false"> </allowAccounts> </net.tcp> <net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10"> </allowAccounts> </net.pipe> <diagnostics performanceCountersEnabled="true" /> </system.serviceModel.activation> </configuration> |
但仍然出现相同的错误,这可以正常工作,无需在 W7 机器上更改配置,有什么想法吗?
一步一步:
添加以下值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <system.serviceModel.activation> <net.tcp listenBacklog="16" maxPendingAccepts="4" maxPendingConnections="100" receiveTimeout="00:00:30" teredoEnabled="false"> <!-- LocalSystem account --> <!-- LocalService account --> <!-- Administrators account --> <!-- Network Service account --> <!-- IIS_IUSRS account (Vista only) --> <!-- Your user account SID --> </allowAccounts> </net.tcp> <diagnostics performanceCountersEnabled="true" /> </system.serviceModel.activation> |
将更改保存到文件 SMSvcHost.exe.config.
完成!
希望对您有所帮助。
按照此处所述更新 smsvchost.exe.config 文件的 "allowedAccounts" 标记部分,然后重新启动 Net.Tcp 端口共享服务,但仍然遇到此错误。但是,在该流程的同一实例中运行着其他服务。共享同一个流程实例的服务有:
1 2 3 4 | Net.Tcp Listener Adapter Net.Tcp Port Sharing Service Net.Pipe Listener Adapter Net.Msmq Listener Adapter Correction: Net.Msmq service actually runs in different instance of SMSvcHost.exe, so you shouldn't have to restart that service. |
如果您的机器上正在运行这些服务中的任何一个,那么您必须停止所有这些服务,然后重新启动它们,以便获取对配置文件的更改。重启机器也能解决问题。
我已经重新启动了它工作的服务。开始-->服务-->Net.Tcp端口共享服务。右键单击并重新启动此服务。
我在 Windows 10 上遇到了同样的问题,以管理员身份运行 Visual Studio 为我解决了这个问题。
我以为我在配置中添加了正确的 sid,但实际上我使用了错误的 sid。
为了获取 sid,我使用了 cmd psgetsid,假设这会给我当前登录的用户,即我自己,但不是,然后我使用 cmd psgetid [username],这给了我一个不同的 sid。使用了这个,现在它可以工作了。