在Vista中托管WCF服务

4
我在VS2008中创建了一个小型WCF服务,当我尝试使用HTTP协议运行主机时,由于没有适当的权限,它崩溃了。在我的“Host.Open()”行上,我得到了这个异常:“HTTP could not register URL http://+:9001/. Your process does not have access rights to this namespace。”但是,我似乎在使用TCP时没有遇到这个问题。我的操作系统是Vista Home Premium。
当我尝试在VS2008中进行调试时,就会发生这种情况。经过大量研究,我确定可以通过构建、进入“bin”文件夹并右键单击我的可执行文件,选择“以管理员身份运行”来使主机运行。当我尝试使用WcfSvcHost.exe时也发生了同样的事情。在成功运行WcfSvcHost之前,我必须从我的菜单中使用“以管理员身份运行”打开VS2008命令提示窗口。
有没有一种正确的方法来解决这个问题,而不是使用这个解决方法?当我下周在Windows 2003服务器上部署时,我会遇到类似的问题吗?
4个回答

7

我昨天尝试过这个,但无法使其工作。你提到它应该是一个“特权控制台”,让我意识到我应该以管理员身份运行命令提示符。我刚刚尝试了一下,它可以工作了。我猜每次重启后我都得这样做? - Mike K
据我所知,您只需要执行一次(每个命名空间/用户对您想要保留的)即可。 - mostlytech
你可能需要给运行服务的账户管理员权限。这样,你就不必在每次重启时重新设置了。 - Andy White

2

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


好观点。我的账户是管理员账户,但我经常忘记除非明确请求,否则我所做的任何事情都不会被授予管理员权限。令人沮丧... - Mike K

1

在本地,你可以将基地址更改为类似于这样的东西:

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

主要部分是添加"Design _ Time _ Addresses"。如果您创建了WCF服务库项目,则默认情况下会设置项目的App.config为此。这种方式一切正常,但如果你删除了"Design _ Time _ Addresses"并尝试使用“http://localhost:8731/MyService/” 运行它,你将会遇到错误。


当您尝试设置单元测试并希望绑定到HTTP并使用HTTP通道运行服务时,这非常完美。 - Kris

0

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

WCF ServiceHost basicHttpBinding 503 error

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

我实际上从未在 Vista 上使其正常工作,当我尝试访问服务时仍然会出现 503 错误。如果您遇到相同的问题/解决方法,请再次发布!谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接