WCF错误与net.服务端点无法监听URI,因为访问被拒绝
本文关键字:URI 因为 访问 拒绝 监听 错误 net 服务 端点 WCF | 更新日期: 2023-09-27 18:11:24
当托管WCF网时,我得到以下错误。Tcp服务在windows 8.1机器,我在管理员组:服务端点在URI网络上侦听失败。tcp://localhost:9001/dataservice',因为访问被拒绝。验证当前用户是否在SMSvcHost.exe.config的适当allowAccounts部分中被授予访问权限。
我甚至按照建议将用户添加到配置中:
<?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>
<add securityIdentifier="S-1-5-18"/>
<add securityIdentifier="S-1-5-19"/>
<add securityIdentifier="S-1-5-20"/>
<add securityIdentifier="S-1-5-32-544" />
<add securityIdentifier="S-1-5-21-2476327175-1934278006-4092406606"/>
</allowAccounts>
</net.tcp>
<net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10">
<allowAccounts>
<add securityIdentifier="S-1-5-18"/>
<add securityIdentifier="S-1-5-19"/>
<add securityIdentifier="S-1-5-20"/>
<add securityIdentifier="S-1-5-32-544" />
<add securityIdentifier="S-1-5-21-2476327175-1934278006-4092406606"/>
</allowAccounts>
</net.pipe>
<diagnostics performanceCountersEnabled="true" />
</system.serviceModel.activation>
</configuration>
但是仍然得到相同的错误,这工作得很好,不需要在W7机器上更改配置,有什么想法吗?
一步一步:
- 从Windows Sysinternals Live下载工具PSGETSID.EXE。Sysinternals工具的Microsoft实时存储库。
- 执行命令:psgetsid.exe[您的用户名]
- 这将列出用户名的SID。记下来。
- 打开Windows服务.
- 右键单击Net。Tcp端口共享服务,在菜单上选择属性。
- 在General选项卡中,找到Path to Executable。打开Windows资源管理器并进入该文件夹。这是服务运行的文件夹。
- 找到并打开文件SMSvcHost.exe.config.
-
添加以下值:
<system.serviceModel.activation> <net.tcp listenBacklog="16" maxPendingAccepts="4" maxPendingConnections="100" receiveTimeout="00:00:30" teredoEnabled="false"> <allowAccounts> <!-- LocalSystem account --> <add securityIdentifier="S-1-5-18"/> <!-- LocalService account --> <add securityIdentifier="S-1-5-19"/> <!-- Administrators account --> <add securityIdentifier="S-1-5-20"/> <!-- Network Service account --> <add securityIdentifier="S-1-5-32-544" /> <!-- IIS_IUSRS account (Vista only) --> <add securityIdentifier="S-1-5-32-568"/> <!-- Your user account SID --> <add securityIdentifier="Your SID Here" /> </allowAccounts> </net.tcp> <diagnostics performanceCountersEnabled="true" /> </system.serviceModel.activation>
-
将更改保存到SMSvcHost.exe.config.
- 重新启动网。Tcp端口共享服务.
完成了!
希望有帮助。
按照这里的描述更新smsvchost.exe.config文件的"allowedAccounts"标记部分,然后重新启动网络。Tcp端口共享服务,但仍然遇到此错误。但是,在该流程的同一实例中还运行着其他服务。共享相同流程实例的服务如下:
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.
如果这些服务在您的机器上运行,那么您必须停止所有这些服务,然后重新启动它们,以便对配置文件进行更改。重新启动机器也可以。
我以为我在配置中添加了正确的sid,但实际上我使用了错误的sid。为了获得sid,我使用cmd psgetsid假设这会给我当前登录的用户,这是我自己,但没有,然后我使用cmd psgetid[用户名],这给了我一个不同的sid。使用这个,现在它工作。
我在Windows 10上也有同样的问题,运行visual studio作为管理员为我解决了这个问题。
我已经重新启动了服务,它工作了。开始——在服务——在网络。Tcp端口共享服务。右击并重新启动此服务