WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8732
Posted
技术标签:
【中文标题】WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8732【英文标题】:WCF Service Host Configuration - Please try changing the HTTP port to 8732 【发布时间】:2014-06-24 14:54:36 【问题描述】:我的 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 服务主机使用的端口?
【问题讨论】:
WCF ServiceHost access rights 的可能重复项 【参考方案1】:经过一番挖掘和研究,我发现最新版本的 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,突然之间我的解决方案又可以工作了。
【讨论】:
【参考方案2】:第一步:以本地管理员身份运行 cmd.exe
第 2 步:运行以下命令在端口 1234 上启用 http
netsh http add urlacl url=http://+:1234/ user=Everyone listen=yes
提示:用户“Everyone”的名称可能会有所不同,具体取决于您操作系统的安装语言。例如在德语中,用户不称为“Everyone”,而是“Jeder”。
【讨论】:
【参考方案3】:另一个选项是绕过特定于端口的访问控制列表并启用 wcfservicehost 以管理员身份运行。
您可以通过在文件系统(例如 C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\wcfsvchost.exe)中找到 wcfsvchost.exe,右键单击该文件并选择“兼容性”选项卡。
在那里,如果您是管理员,则可以选择“以管理员身份运行此程序”(如果您正在使用 ***,您应该是;-))。
重新启动 Visual Studio,一切顺利。
【讨论】:
您提出了以管理员身份运行 Visual Studio 的观点。我的评论是关于 wcfsvchost.exe,这可能不是一个约束,具体取决于您所谈论的“引用的网络 DLL”。 这在 Windows 10 中不起作用。在 VS2015 中运行该解决方案会产生一个对话框,指出 VS 本身需要以提升的权限运行。然而,公认的解决方案有效。【参考方案4】:管理员重启即可解决。
【讨论】:
以上是关于WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8732的主要内容,如果未能解决你的问题,请参考以下文章
如何将基于套接字的客户端与 WCF (net.tcp) 服务一起使用?
WCF 服务主机找不到任何服务元数据。请检查元数据是不是启用