我的 PC 上运行着一个复杂的基于 WCF 服务的解决方案,但由于安装 Windows 8.1 时出现问题,我不得不“刷新”我的 PC。现在我已经重新安装了 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 服务主机使用的端口?
经过一番挖掘和研究后,我发现最新版本的 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/端口:
netsh http add urlacl url=http://+:8732/ user=WORK\Clara
重新启动 Visual Studio,突然我的解决方案再次运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)