我在做什么:
开放Visual Studio社区2015
File ->新建->项目
在Visual c#: Web -> ASP下。NET Web应用程序
Web应用程序
并按f5弹出错误“无法连接到web服务器'IIS Express'”。
删除applicationhost。config,位于Documents\IISExpress\config中,不会更改错误消息。(程序文件和程序文件(x86)中也有一个IISExpress文件夹。)
我注意到一件事,我不知道这是不是问题
引用文件'lib/jquery-validation/jquery.validate.js'未找到。
我有一堆破烂,但我没注意到里面有什么。这里有一些内容:
“框架”:{“框架”
我没有注意到问题,但我有网络数据,如果这可以帮助找出为什么我不能连接到web服务器。我立即得到一个RST,ACK,所以我猜端口是关闭的,不管这个web服务器是什么,没有被设置。
关于这个问题的更多信息:800700c1 error from /trace:error
我试过了:
删除applicationhost。配置(和更改端口号)
以管理员身份运行visual studio
删除文档中的IISExpress文件夹(更改错误消息,直到文件夹重新安装)
切换SSL关闭和打开,复制url到启动框。(注意:我没有使用ssl)
清除所有SFC /scannow错误
从x86版本和64位版本启动iisexpress
我不会假装完全理解MS bug造成的这个问题,但这里有另一个潜在的解决方案:
在.vs/config/applicationHost. conf文件中。在config文件中,找到<system.applicationHost><applicationPools>。在这些池下,确保managedRuntimeVersion属性值与系统的IIS配置中的值(和/或已安装的. net框架的版本)匹配。
例如,你可能会发现(正如我所做的)生成的文件有:
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
在我的例子中,你可以用:
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0.30319" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
注意从“v4.0”到“v4.0.30319”的替换。这就解决了问题。
发生了什么:
我相信VS正在生成一个applicationHost。. net框架的“默认”版本,这可能与系统上安装/配置的特定版本不匹配。您可以通过跟踪Process Monitor中的执行来调试/观察这个问题,并找到iisexpress.exe的命令行。在添加/trace:error的情况下运行此命令,将得到一个关于预装版本为v4.0的CLR失败的信息更丰富的消息。即:
启动IIS Express…
尝试预加载CLR版本v4.0时失败。Hr = 80131700
W3WP_HOST hr = 80131700初始化失败
过程模型关闭称为
无法启动iisexpress。
不管怎样,我觉得这可能会对其他人有所帮助,因为在网上有多个含有坏信息的推荐信是很常见的,我个人现在已经碰到过几次了。
我可以通过改变一个东西来切换这个错误。在我的ASP。Net Core 1.0 RC2 Web应用程序项目的启动设置。json文件:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "https://localhost:18177/",
"sslPort": 0
}
},
to
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:18177/",
"sslPort": 0
}
},
我已经更改为https,试图使用该协议运行项目。显然,这里不适合做这种改变。我怀疑它在同一个端口上创建了多个绑定,IIS Express不喜欢这样。
我也有同样的问题,但我修复它的方式是通过去applicationhost。配置并删除一个不是由我添加的端口(IIS Express我猜),它将我的特定端口站点放在另一个端口上。
以下是配置文件中绑定的内容:
<bindings>
<binding protocol="http" bindingInformation="*:54764:localhost" />
<binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>
我删除了第一个绑定项,因为我想要的唯一端口是44360。我的配置文件现在看起来像这样:
<bindings>
<binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>
现在我调试时看不到错误了。
我还注意到我的第二个API在我的项目有端口80也分配给它,我删除了它。
请确保下列注册表项\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList不包含未绑定到您机器上已启用的网络适配器的IP地址。
这是我在尝试了这个SO问题中列出的各种其他解决方案后出现问题的原因,例如:
删除applicationhost.config
打开和关闭SSL。
修改端口号。
手动关闭IIS Express进程。
重新安装IIS Express。
修复Visual Studio。
安装新版本的Visual Studio
创建一个新的。net框架Web应用程序。
创建一个新的。net核心Web应用程序。
执行netsh urlacl命令
运行netsh http add iplisten ipaddress=::
以管理员身份运行Visual Studio。
确保旁路遍历权应用..
显然,当IIS express试图启动时,它正在尝试绑定到这个无效的IP。解决办法是删除无效的IP。这个额外的无效可能来自我的家庭无线网络,而在工作中,我通过硬连线适配器分配了一个不同的IP。
一个全面的解决方案可能是删除注册表项中的所有ip,然后运行netsh http add iplisten ipaddress=::命令允许监听所有地址。
在注意到以下事件日志条目后,我能够追踪到这个问题:
IIS Express: The worker process for app pool 'WebApplicationNetCore AppPool',
PID='23260', failed to initialize the http.sys communication when
asked to start processing http requests and therefore will be
considered ill by W3SVC and terminated. The data field contains the
error number.
IIS Express: The worker process failed to initialize correctly and
therefore could not be started. The data is the error.
HTTP Event: Unable to bind to the underlying transport for 192.168.1.42:52999. 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.
澄清
这里的很多答案都是一样的,比如“重新启动,它就神奇地重新工作了”。
好吧,10次中有9次人们会遇到这样的问题,因为ip地址已经被使用了。
回答
可能有2个正在使用的ip地址。你可以通过以下方式找到它们:
1)右键单击启动项目
2)点击“属性”
3)点击“调试”选项卡
在这里你可以看到你的“应用URL”和“SSL URL”。
如果你的“应用程序URL”正在使用中,只需在那里更改并保存它,它就会再次工作。
如果您的“SSL URL”正在使用中,请关闭VS,删除“applicationhost. conf”。在你的项目的隐藏。VS文件夹中打开“config”文件,然后再次打开VS。
许多回答并没有完全解决眼前的问题。对我来说,真正的问题是在我的应用程序主机中有两个使用相同端口的绑定。配置文件和我没有打开端口到我的第二个(非localhost)绑定。VS将允许你在这些情况下仍然运行,但前提是你在管理模式下(因此上面所有的答案)。
您实际上是在同一个端口上创建了应用程序的两个IIS express实例,因此需要更改applicationhost中的一个端口。配置文件将允许您继续。有两个不同的应用程序主机。配置文件。您将希望选择具有在项目属性中看到的绑定IP和端口的一个
.
转到可以看到项目解决方案和项目文件夹的文件夹(在文件资源管理器中显示隐藏项)。导航到你隐藏的。vs文件夹-> "YourAppName"文件夹-> config。它应该包含您在项目属性中看到的绑定信息。
例子:
<bindings>
<binding protocol="http" bindingInformation="*:7000:127.0.0.1" />
<binding protocol="http" bindingInformation="*:7000:192.168.0.5" />
</bindings>
将其中一个端口号更改为“7000”以外的值,这样您就不会试图使用相同的端口。
在我的例子中,我使用的是192地址,这不是一个本地主机地址,所以我需要使用一些netsh命令来打开该端口和ip。下面的链接显示了如何为IIS Express打开端口以允许远程连接。以普通用户身份运行将无法工作,除非运行列出的这些netsh命令。
netsh命令如下:
Netsh HTTP添加urlacl url=http://192.168.1.42:58938/ user=everyone
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=58938 profile=private remoteip= local子网action=allow
复制这些命令,并在cmd中以ADMIN权限和您的ip地址和端口号运行它们。
我的问题和其他人说的类似,但有点不同,可能会对别人有所帮助。我运行的是VS 2019和。net 5.0 ASP.NET。
博士TL;
确保套接字绑定在.vs\…\applicationhost中。config和launchSettings。json的项目和选择的配置匹配当前启用的网卡:)。
细节
我一直在摆弄我的.vs\…\applicationhost。config和launchSettings。json能够主机不只是在本地主机,但在我的网卡IP地址/端口(套接字)上测试在另一个设备。最近,我添加了第二个套接字,让同事通过VPN测试一些东西。当VPN未连接时,我无法启动IIS。
我重新连接了VPN,一切都恢复正常了。然后在断开VPN连接后,我更新了launchSettings。json(并重新启动VS2019),但忘记更新applicationhost.config中的绑定。我相信IIS Express还可以再托管一次,但第二次就不行了。就在那时,我意识到我在applicationhost中仍然有VPN套接字。配置绑定。我更新了它,重启了VS2019,一切都很好。