一些网络项目给我带来了问题,而另一些则工作正常。我决定专注于其中一个有问题的。我在 Windows 7 上使用 Visual Studio 2013。我想我是以管理员身份运行它,窗口标题显示为 PROJECT NAME - Microsoft Visual Studio (Administrator)
。
当我尝试运行该项目时,我收到一个弹出窗口:
无法启动 IIS Express Web 服务器。未能为站点“SITE NAME”应用程序“/”注册 URL“http://localhost:62940/”。错误描述:访问被拒绝。 (0x80070005)。
这似乎不是 entirely uncommon,但我尝试了许多建议但没有运气:
已删除 %userprofile%\Documents\IISExpress\,尝试运行。 netsh http add urlacl url=http://localhost:62940/user=everyone,重启并尝试运行。 (实际上用户=Alla 自瑞典 Windows 以来)。 netsh http 删除 urlacl url=http://localhost:62940/,重新启动并从
我无能为力,我做错了什么?
如果我更改项目的端口(例如更改为 55555),它会启动......这不是一个理想的解决方案,因为这些项目是由几个人共同完成的。也许端口被其他东西阻塞了?如果是这样,有没有一种简单的方法可以通过什么来检查?
端口 62940 似乎是空闲的。运行
在几个月没有碰它之后,我今天尝试开始这个项目。它有效,但我不知道为什么。
netstat
不会显示任何正在侦听它的应用程序。肯定有其他问题。
netstat -aon | findstr
以查看另一个应用程序是否也监视端口 62940。如果是,则无法监视该端口,而必须切换到另一个端口。当它们显然不是原因时,不要更改 applicationHost.config 或 netsh http
。
netstat
。似乎没有应用程序正在监视端口 62940。肯定有其他问题。
我通过更改项目的端口解决了错误。
我做了以下步骤:
1 - 右键单击项目。 2 - 转到属性。 3 - 转到服务器选项卡。 4 - 在选项卡部分,更改其他端口的项目 URL,例如 8080 或 3000。
祝你好运!
是的,我同意,最佳答案确实是专业的解决方案。这是中间人的一个:
解决方案资源管理器
右键单击项目选择 Unload project Again 右键单击并选择 Edit ProjectName.csproj 删除这 3 行
<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:62940/</IISUrl>
保存并重新加载项目,一切顺利。
尝试(作为提升的管理员)
netsh http delete urlacl url=http://*:62940/
netsh http show urlacl
查找冲突条目。
netsh http add urlacl url=http://localhost:62940/ user=Everyone
添加正确的网址
解决此问题的理想方法是使用 IIS Express 托盘图标来停止导致问题的网站。为此,请单击任务栏右侧的向上小箭头,然后右键单击 IIS Express 图标。这将弹出一个小窗口,显示 IIS Express 当前正在运行的网站...
https://i.stack.imgur.com/zgCZs.png
如果您单击“查看站点”下的其中一项,您可以选择停止该站点。或者,您可以单击窗口底部的退出项目来停止所有网站。
这应该使您能够在 Visual Studio 中进行调试。当您再次开始调试时,IIS Express 会自动重新启动网站,并且应该可以分配端口。
如果失败了,你必须用肮脏的方式来做。打开 Windows 任务管理器并杀死 Microsoft.VisualStudio.Web.Host.exe*32
进程,然后您可以正常运行项目。请注意,这将完全杀死 IIS Express,这意味着所有网站都将停止,因此如果要调试任何其他网站,则必须在 VS 中重新启动每个网站。首先尝试使用弹出图标方法,因为它更清洁、更安全。
不知道这是否能解决您的问题,但它对我有用。
更新感谢 JasonCoder(请参阅下面的评论)在 Win10 上添加,过程是 Microsoft.VsHub.Server.HttpHost.exe
使用 Visual Studio 2015 时,解决方案可能与之前的答案有所不同。 VS2015 在与您的解决方案文件相同的文件夹下创建一个隐藏文件夹 .vs。下面是一个包含 applicationhost.config 的配置文件夹。删除此文件(或整个 .vs 文件夹)然后启动 VS2015 重新创建它可以修复此错误。
最近也遇到这个错误。尝试了上述所有修复,但没有一个奏效。
要禁用它,请在命令提示符中键入 services.msc
,然后右键单击并禁用 Internet 连接共享。我还编辑了它的属性以在启动时禁用。我的现在看起来像这样:services capture screenshot。
我在 Windows 10 上从 Visual Studio 2019 运行我的应用程序时遇到了同样的问题。经过一段时间的谷歌搜索并尝试了各种建议的解决方案但没有成功,我确定“访问被拒绝”错误是由于我的应用程序使用的端口号 (50403 ) 属于“排除的端口范围”。
您可以使用以下命令查看排除的端口范围:
netsh interface ipv4 show excludedportrange protocol=tcp
经过一段时间的谷歌搜索,我发现创建这些排除范围的两个最有可能的罪魁祸首是 Docker 和 Hyper-V。我的电脑上没有安装 Docker,但 Hyper-V 安装了。
我的解决方案
禁用 Hyper-V:控制面板-> 程序和功能-> 打开或关闭 Windows 功能。取消勾选 Hyper-V 重新启动计算机。将您正在使用的端口添加到端口排除范围:netsh int ipv4 add excludeportrange protocol=tcp startport=50403 numberofports=1 store=persistent Reenable Hyper-V 重新启动计算机
我将我正在使用的端口添加到排除列表中,以确保在重新启用 Hyper-V 后我不会再次遇到此问题。在第 4 步和第 5 步之后,当我查看排除的端口范围时,我可以看到 Hyper-V 保留了一个端口范围,从我的端口之后的下一个端口开始。
https://i.stack.imgur.com/KaPsC.png
我的应用程序现在完美运行!
当我尝试从远程位置访问我的站点时,这发生在我身上:
起初,applicationhost.config (VS2015) 包含标准:
<binding protocol="http" bindingInformation="*:64376:localhost" />
为了从网络中的远程位置访问我的站点,我添加了(步骤 1):
<binding protocol="http" bindingInformation="*:64376:192.168.10.132" />
然后,我以管理员权限进入 CMD(步骤 2):
netsh http add urlacl url=http://*:64376/ user=Everyone
作为第 3 步,我将它添加到防火墙的规则。
netsh advfirewall firewall add rule name=”IISExpressWeb” dir=in protocol=tcp localport=64376 profile=private,domain remoteip=localsubnet action=allow
然后,在尝试再次运行解决方案时出现此错误。
解决方案:我似乎做的一切都是正确的,但是直到我为 现有的 localhost 规则运行 netsh
后它才起作用:
netsh http add urlacl url=http://localhost:64376/ user=Everyone
现在,它又可以工作了。
我只是有一个类似的问题。我不完全确定如何描述实际故障,但似乎保留中的主机名不正确。在提升的命令提示符下尝试此操作...
netsh http delete urlacl url=http://localhost:62940/
... 然后 ...
netsh http add urlacl url=http://*:62940/ user=everyone
并重新启动您的网站。它应该工作。
我遇到了同样的错误消息,但它看起来像是从 IIS Express 生成的。 This article 帮我解决了
TL;博士
从管理命令提示符运行以下命令:
> netsh http add iplisten ipaddress=::
在尝试了许多建议的解决方案但没有成功后,我重新启动了我的电脑。之后问题就没有再出现了。
这是我找到的唯一解决方案
net stop winnat
net start winnat
我最终清理了项目文件 (csproj) 和 applicationhost.config (iis express),其中包含有关 iis express 配置的所有条目。在那之后,它奏效了。
applicationhost.config
文件对我有用。我刚刚删除了其中的所有 <site>
条目。 C:\Users\<USERNAME>\Documents\IISExpress\config\applicationhost.config
<sites>
下的网站条目并按了 Ctrl+F5
。它说错误无法启动 IIS Express。因此,右键单击项目,转到属性,在 Web 下,在指定 http://localhost:3758/
的项目 URL 文本框旁边,单击“创建虚拟目录”。现在Ctrl+F5
很好地启动了该网站。
如果您在安装 Visual Studio 2015 后遇到此问题,并且您可以在系统事件日志中看到错误消息,例如:Unable to bind to the underlying transport for [::]:{your_port}. . The IP Listen-Only list may contain a reference ...
,那么您可能缺少注册表项。
在管理命令提示符下运行它:netsh http add iplisten ipaddress=::
以修复它。
我找到了详细描述的解决方案here
netsh http add iplisten ipaddress=::
感谢@Ignas
在此处列出的所有步骤对我来说都失败后,我通过以管理员身份运行 VS2015 使其工作。
这在 Windows 10 和 VS 2013 上发生在我身上。显然 IIS Express 处理的最大端口号。 62546 以上的端口对我不起作用。
%userprofile%\Documents\IISExpress
并编辑了我的 .csproj 文件,从端口 63584 移动到 61111。重新加载后,我的项目开始正常。
只需重新启动 Visual Studio 即可解决该错误。它与重新启动 Microsoft.VisualStudio.Web.Host.exe*32 进程的效果相同。
遇到了同样的问题,IIS express 抱怨 http://localhost:50418/ 并且上述解决方案都不适合我..
去 projektFolder --> .vs --> config --> applicationhost.xml
在标签 <sites>
中,我发现我的网络应用注册了两个绑定。
<site name="myApp.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\git\myApp\myApp.Web" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:44332:localhost" />
<binding protocol="http" bindingInformation="*:50418:localhost" />
</bindings>
</site>
删除指向 *:50418:localhost 的绑定解决了这个问题。
使用 VS2017 和 IISExpress v10。
我的问题原来是我在项目设置上启用了 SSL。我只是禁用了它,因为我不需要 SSL 来在本地运行项目。
在 Visual Studio 2015 中:
在解决方案资源管理器中选择项目。
在“属性”窗口中,将启用 SSL 设置为 False。
我能够运行该项目。
在我的情况下,我收到有关正在使用的端口 443 的错误,因为这是在项目的 SSL URL 上设置的端口。
运行 netstat -abn
我注意到软件“Duet Display”在 ~51000 范围内保留了数千个端口。
关闭它解决了我的问题。
有时这个错误可能是在同一台机器上运行的另一个 Visual Studio 版本。
转到项目“Properties”=>“Web”,然后在“Servers”部分将端口更改为其他未使用的端口并保存。您将被要求创建一个虚拟目录,然后单击“是”。现在运行项目,它现在可以工作了。
在我的情况下,它一开始工作,一段时间后停止工作,IIS Express 报告该端口正在使用中。
netstat -ab
表明 Chrome 正在使用该端口。在我退出 Chrome 后,它又开始工作了。
但是,我不确定 Chrome 为什么会占用该端口。
这发生在我在 Windows 7 和 VS 2013 上,在构建后在浏览器上查看项目时。我只需要关闭浏览器“Chrome”,然后使用某些实用程序(卡巴斯基)确保我的网络活动中没有使用该端口,然后再次尝试并正常工作。
在 Visual Studio 2015 中:
在您的项目中找到您的启动页面(例如:mypage.aspx),然后右键单击它。
单击设置为起始页。
右键单击项目。
单击属性。
单击左侧的 Web 选项卡。
在 Project URL 中,输入不同的端口,例如:http://localhost:1234/
在开始操作中,选择特定页面:mypage.aspx 或选择特定 URL:http://localhost:1234/mypage.aspx?myparam=xxx
我写它是为了提供信息。
删除项目中的文件。
清洁>构建>项目启动后
我通过杀死 iexplorer 和 iexplorer*32 的所有实例解决了这个问题。即使应用程序窗口已关闭,看起来 Internet Explorer 仍在内存中保持端口打开。
我在使用 JetBrains Rider 时遇到了这个问题,特别是对于端口 80 和 90 位,它正在与其他端口以及视觉工作室一起使用。
以管理员身份运行后,这解决了问题。
在 Visual Studio 2019 中,只需删除调试配置文件并创建新配置文件即可
转到项目属性 在调试选项卡中首先尝试更改端口 Web 服务器设置如果更改端口不起作用然后删除调试配置文件并创建新的 One-Warning 确保您知道以前的设置
对我有用的是禁用所有其他网络适配器,除了我当前使用的那个。事件查看器中的事件是:Unable to bind to the underlying transport for [::]:50064. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.
因为我有 VMware Workstation、Docker(以及 Hyper V)一些 VPN 客户端,所以我有很多网络接口。
Microsoft.VisualStudio.Web.Host.exe*32
进程。