我的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服务主机使用的端口?
答案 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)
只需重新启动它,管理员就可以解决它。