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机器上更改配置,有什么想法吗?

WCF错误与net.服务端点无法监听URI,因为访问被拒绝

一步一步:

  1. Windows Sysinternals Live下载工具PSGETSID.EXESysinternals工具的Microsoft实时存储库。
  2. 执行命令:psgetsid.exe[您的用户名]
  3. 这将列出用户名的SID。记下来。
  4. 打开Windows服务.
  5. 右键单击Net。Tcp端口共享服务,在菜单上选择属性
  6. General选项卡中,找到Path to Executable。打开Windows资源管理器并进入该文件夹。这是服务运行的文件夹。
  7. 找到并打开文件SMSvcHost.exe.config.
  8. 添加以下值:

    <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>
    
  9. 将更改保存到SMSvcHost.exe.config.

  10. 重新启动网。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端口共享服务。右击并重新启动此服务