Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF服务主机配置-请尝试将HTTP端口更改为8732_Wcf - Fatal编程技术网

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

WCF服务主机配置-请尝试将HTTP端口更改为8732,wcf,Wcf,我的电脑上有一个复杂的基于WCF服务的解决方案,但由于安装Windows 8.1时出现问题,我不得不“刷新”我的电脑。现在我重新安装了Visual Studio 2012,我的项目不再正常运行 调试单元测试时,wcfservicehost显示错误: Please try changing the HTTP port to 8733 or running as Administrator. System.ServiceModel.AddressAccessDeniedException: HTTP

我的电脑上有一个复杂的基于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服务主机使用的端口?

经过仔细研究,我发现最新版本的Windows强制执行安全设置,阻止您监听任何端口。我假设在安装VisualStudio时,它会保留一个端口供自己使用,这样您就可以托管并调试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
我假设这是安装VisualStudio时添加的条目

执行以下命令保留8732 url/端口:

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

重新启动Visual Studio,我的解决方案会突然重新工作。

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

您可以通过在文件系统中查找wcfsvchost.exe(例如C:\Program Files(x86)\Microsoft Visual Studio 11.0\Common7\IDE\wcfsvchost.exe),右键单击该文件并选择“兼容性”选项卡来完成此操作

在这里,如果您是管理员,您可以选择“以管理员身份运行此程序”(如果您正在运行stackoverflow;-),您应该是管理员)


重新启动Visual Studio,您就可以开始了。

管理员只需重新启动即可解决问题。

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

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

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

提示:用户“Everyone”的名称可能不同,并且取决于操作系统的安装语言。例如,在德语中,用户的名字不是“Everyone”,而是“Jeder”。

您强调了以管理员身份运行Visual Studio的重要性。我的评论是关于wcfsvchost.exe的,这可能不是一个约束,取决于您所谈论的“引用的网络DLL”。这在Windows 10中不起作用。在VS2015中运行解决方案会生成一个对话框,说明VS本身需要以提升的权限运行。但是,可接受的解决方案有效。可能重复