使用UAC调试WCF NetTCP服务

时间:2010-10-08 15:30:01

标签: visual-studio-2010 windows-7 wcf uac

我配置了一组NetTCP服务,这些服务在Windows服务下运行以进行生产,但我使用控制台应用程序将它们旋转以进行调试。在Windows Vista中,我彻底禁用了UAC,因为它很烦人,但是我试图让它启用7,因为它可以做我想要的一切,同时非常安静而不是唠叨。

我遇到的问题是在“标准”模式下运行VS时(即不使用以管理员身份运行),服务不会启动,因为它说明了这一点:

“服务端点无法侦听URI'net.tcp:// localhost:60000 / [ServiceName]',因为访问被拒绝。请验证当前用户是否在SMSvcHost.exe的相应allowedAccounts部分中被授予访问权限的.config“。

经过一些研究后,我能够找到这个文件并使用我的用户帐户的SID进行修改。配置如下所示:

<?xml version="1.0" encoding="utf-8"?><configuration>
<runtime>
    <gcConcurrent enabled="false" />
    <generatePublisherEvidence enabled="false" />
</runtime>

<system.serviceModel.activation>
    <net.tcp listenBacklog="10" maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10" teredoEnabled="false">
        <allowAccounts>
            <add securityIdentifier="S-1-5-21-XXXXXXX"/>
        </allowAccounts>
    </net.tcp>
    <net.pipe maxPendingConnections="100" maxPendingAccepts="2" receiveTimeout="00:00:10">
        <allowAccounts>
            <add securityIdentifier="S-1-5-21-XXXXXXX"/>
        </allowAccounts>
    </net.pipe>
    <diagnostics performanceCountersEnabled="true" />
</system.serviceModel.activation></configuration>

SID来自Sysinternals套件中打包的工具,并且针对ADSI Edit进行了验证,因此我知道它是正确的。重新启动后,服务仍然不会启动,我试图避免强制它在管理模式下运行,因为那时你不能再双击解决方案或项目文件了,这是相当恼人的。

有人有什么想法吗? SMSvcHost.exe.config文件来自“C:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation”,即使我正在运行x64,该应用程序也是在x86模式下编译的。我不确定这是不是我的麻烦所在?

1 个答案:

答案 0 :(得分:2)

要查找“正确”的配置文件位置,请执行以下操作: 在任务管理器的serivce选项卡中找到NetTcpPortSharing。 在上下文菜单中单击“转到”处理。 单击“打开文件位置”。

PS。 在我的带有.NET 4位置的Windows 2008 R2 x64上是C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319