我正在运行Windows 7和Visual C#Express 2010。
我的ACL中有以下规则:
Reserved URL : http://www.example.com:8020/gamerecords/
User: Myricae\Dario
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;S-1-5-21-3389095862-38437692-3014067205-1001)
这并不重要,但我的 hosts 文件中也有相应的条目:
127.0.0.1 www.example.com
我正在尝试在控制台应用程序中自托管WCF服务:
var baseAddress = new Uri("http://www.example.com:8020/gamerecords/");
using (ServiceHost host = new ServiceHost(typeof(Acme.Gaming.GameRecordsImpl), baseAddress))
{
...
}
我得到以下异常:
Unhandled Exception: System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:8020/gamerecords/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). ---> System.Net.HttpListenerException: Access is denied
原因是 ServiceHost 尝试绑定到任何主机名( + ),但ACL规则仅授权当前用户使用主机名 www.example。 COM 。如果我将规则更改为:
Reserved URL : http://+:8020/gamerecords/
User: Myricae\Dario
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;S-1-5-21-3389095862-38437692-3014067205-1001)
一切正常。但是,我不认为 ServiceHost 应该真正尝试绑定到任何主机名;相反,它应该只在 www.example.com 上发布服务。 为什么WCF会尝试绑定多个主机名?。
我发现a page描述了类似的问题。
答案 0 :(得分:1)
您是否通过“以管理员身份运行”启动了应用程序?