WCF服务主机配置 - 请尝试将HTTP端口更改为8732

时间:2014-05-07 14:45:13

标签: wcf

我的PC上有一个复杂的基于WCF服务的解决方案,但由于安装Windows 8.1时遇到问题,我不得不“刷新”我的电脑。现在我重新安装了Visual Studio 2012,我的项目不再正常运行。

当我调试单元测试时,wcfservicehost显示错误:

Please try changing the HTTP port to 8733 or running as Administrator.
System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:8732/Design_Time_Addresses/MyWCFService/Name/. 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

显然,通常的解决方案是以管理员身份运行Visual Studio(可能因为它会在某处覆盖某些内容)但是我无法执行此操作,因为我需要在网络驱动器上引用DLL并且网络驱动器不能以管理员身份运行时访问。

我假设有一个配置文件或注册表项确定运行时Visual Studio或WCF服务主机使用哪个端口,并且我以前的Windows安装中有一个剩余的条目。

要将端口更改为8733,需要编辑每个服务,重新引用它们,然后重建解决方案并希望它能正常工作。

有没有办法设置或强制WCF服务主机使用的端口?

4 个答案:

答案 0 :(得分:23)

经过一番挖掘和研究后,我发现最新版本的Windows强制执行安全设置,阻止您收听任何端口。我假设在安装Visual Studio时,它会保留一个供自己使用的端口,以便您可以托管并调试Web服务。这是我的开发机器上的localhost:8732端口,但是重新安装Visual Studio它现在是localhost:8733,不幸的是我解决方案中的所有app.config文件都指向端口8732.

运行提升的命令提示符并执行netsh http show urlacl。这显示了我发现的保留端口列表:

Reserved URL            : http://+:8733/Design_Time_Addresses/
User: NT AUTHORITY\INTERACTIVE

我假设,这是安装Visual Studio时添加的条目。

执行以下命令会保留8732 url / port:

netsh http add urlacl url=http://+:8732/ user=WORK\Clara

重新启动Visual Studio,我的解决方案突然再次运行。

答案 1 :(得分:1)

另一个选项是绕过特定于端口的访问控制列表,并使wcfservicehost能够以管理员身份运行。

您可以通过在文件系统中找到wcfsvchost.exe(例如C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ wcfsvchost.exe)来执行此操作,右键单击该文件并选择& #39;兼容性'标签。

在那里,如果您是管理员,则可以选择“以管理员身份运行此程序”(如果您正在摇摆堆栈溢出,则应该如此; - ))。

重新启动Visual Studio,你应该很高兴。

答案 2 :(得分:1)

第1步:以本地管理员身份运行cmd.exe

步骤2 :运行以下命令以启用端口1234上的http

netsh http add urlacl url=http://+:1234/ user=Everyone listen=yes

提示:用户名称"所有人"可以有所不同,取决于您的操作系统的安装语言。例如,在德语中,用户不会被称为" Everyone",但是" Jeder"。

答案 3 :(得分:-3)

只需重新启动它,管理员就可以解决它。