【问题标题】:Debugging WCF NetTCP Services with UAC使用 UAC 调试 WCF NetTCP 服务
【发布时间】:2010-10-08 15:30:00
【问题描述】:

我配置了一组 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 模式下编译的。我不确定这是否是我的问题所在?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多