ServiceHost绑定到多个主机名/基地址

时间:2013-12-20 16:22:12

标签: c# wcf acl

我正在运行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描述了类似的问题。

1 个答案:

答案 0 :(得分:1)

您是否通过“以管理员身份运行”启动了应用程序?