【问题标题】:Hosting a WCF Service in Vista在 Vista 中托管 WCF 服务
【发布时间】:2009-02-28 20:41:24
【问题描述】:

我在 VS2008 中组装了一个小型 WCF 服务,当我尝试使用 HTTP 协议运行主机时,它会爆炸,因为它没有这样做的适当权限。在我的“Host.Open()”行上,我得到了这个异常:“HTTP 无法注册 URL http://+:9001/。您的进程没有访问此命名空间的权限。”我使用 TCP 似乎没有这个问题。我的操作系统是 Vista Home Premium。

当我尝试在 VS2008 中调试它时,就会发生这种情况。经过大量研究,我确定我可以通过构建来运行主机,转到“bin”文件夹,然后右键单击我的可执行文件,选择“以管理员身份运行”。当我尝试使用 WcfSvcHost.exe 时也发生了同样的事情。在成功让 WcfSvcHost 运行我的服务之前,我必须使用“以管理员身份运行”从我的菜单中打开 VS2008 命令提示符窗口。

有没有办法做到这一点,而不是使用这个解决方法?当我下周尝试在 Windows 2003 Server 上部署这个时,我会遇到类似的问题吗?

【问题讨论】:

    标签: visual-studio wcf http windows-vista service


    【解决方案1】:

    此链接可能对您有所帮助:http://msdn.microsoft.com/en-us/library/ms733768.aspx

    短版:从特权控制台预注册 url/命名空间

    netsh http 添加 urlacl url=http://+:9001/user=DOMAIN\user

    【讨论】:

    • 我昨天试过了,但无法正常工作。您认为它应该是“特权控制台”的观点让我知道我应该“以管理员身份”执行命令提示符。我刚才试过了,它奏效了。我想我每次重启后都必须这样做?
    • AFAIK 你只需要做一次(每个命名空间/你想保留的用户对)
    • 您可能必须授予运行服务管理员权限的帐户。这样你就不必每次重启都重新做
    【解决方案2】:

    确保您以管理员身份启动 VS..

    【讨论】:

    • 好点。我的帐户是管理员帐户,但我经常忘记,除非我明确要求,否则我所做的任何事情都不会被授予管理员权限。令人沮丧...
    【解决方案3】:

    在本地,您可以将基址更改为如下内容:

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyService/" />
          </baseAddresses>
        </host>
    

    主要部分是添加了“设计_时间_地址”。如果您创建 WCF 服务库项目,默认情况下它会像这样为项目设置 App.config。这样一切正常,但如果您删除“Design_Time_Addresses”并尝试使用“http://localhost:8731/MyService/”运行它,您将遇到您遇到的错误。

    【讨论】:

    • 当您尝试设置要绑定到 http 的单元测试并使用 http 通道运行服务时,这非常适合。
    【解决方案4】:

    我在这里遇到了类似的问题:

    WCF ServiceHost basicHttpBinding 503 error

    netsh 命令适用于 Vista,但对于 Windows 2003 服务器,有一个 HttpCfg.exe 实用程序允许您为帐户注册 URL/命名空间。不确定 netsh 是否在 2003 年可用。

    我从来没有真正让它在 Vista 上运行,当我尝试访问服务时仍然收到 503 错误。如果您遇到同样的问题/解决问题,如果您再次发布,我将不胜感激!谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多