【发布时间】: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