Win10 VS 使用本地 IIS 服务器调试程序问题总结

2018年05月10日 11:24 · 阅读(3495) ·

开发环境

名称 版本
操作系统 Windows 10 X64
Visual Studio 2010 10.0.40219.1 SP1Rel
Visual Studio Ultimate 2013 12.0.21005.1 REL
IIS lnternet lnformation Services (version 10.0.18362.1)

问题概述

最近部署3个项目,一个是 VS2010 创建的,两个是 VS2013 创建的。这 3 个项目都是使用本地 IIS 服务器进行调试的,因为项目中的登录验证都是调到统一的验证第三方,所以需要使用 IP 访问项目内容。

在 Win7 系统下,这 3 个项目运行都可以自动在 IIS 服务器下创建网站,但是在 Win10 下面却不行,遇到很多问题,下面就是这些问题及解决的方法。

加载项目失败没有足够的特权访问计算机上的 IIS 网站

在 Win10 下使用 VS2010,从 SVN 上下载好项目后,使用 VS2010 打开,其中的 Web 项目无法加载,出现如下弹框内容

  1. Web 应用程序项目 * 已配置为使用 IIS。无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。

解决方法一

参考

VS2012[Web应用程序项目*已配置为使用IIS。无法访问IIS元数据库]

右键-编辑 *.csproj-找到下面的节点修改为 false,重新加载项目即可

  1. <UseIIS>False</UseIIS>

产生此问题的原因

使用解决方法一后,查看项目 Properties-Web,发现是之前的项目使用了 使用本地 IIS Web 服务器 的原因

有一些项目运行要求不使用 VS 的开发服务器而使用 IIS 服务器,比如一些第三方登录验证的项目,所以解决方法一只是解决了调试的问题,并没有从根本上解决问题。

解决方法二

因此我们切换到 Properties-Web,点击 使用本地 IIS 服务器

无法创建虚拟目录

点击创建虚拟目录时,出现如下错误

  1. ---------------------------
  2. Microsoft Visual Studio
  3. ---------------------------
  4. 无法创建虚拟目录。在本地计算机上未能找到服务器“http://localhost/tps”。只有本地 IIS 服务器支持创建虚拟目录。
  5. ---------------------------
  6. 确定
  7. ---------------------------

虚拟目录

这里的虚拟目录是 IIS 上的一个虚拟目录,这个目录可以指向其它磁盘位置,也可以指向它自己

比如这里的 “http://localhost/tps”

如果我们没有指定虚拟目录,那么访问这个网站就使用 “http://localhost/”

指定了虚拟目录 tps 后,这个网站就可以 “http://localhost/tps” 来访问,在网站目录下面加了一个目录 tps,这个目录是指向网站的

安装 IIS

根据提示,安装 IIS

IIS 安装完毕后,再次点击 创建虚拟目录,还是同样的提示,这里我们手动创建一个网站,网站目录就是项目目录,虚拟目录就会创建到网站下面。

无法创建虚拟目录。ASP.NET 2.0 尚未在 Web 服务器上注册

  1. Unable to create the virtual directory. ASP.NET 2.0 has not been registered on the Web server. You need to manually configure you Web server for ASP.NET 2.0 in order for your site to run correctly.
  2. 无法创建虚拟目录。ASP.NET 2.0 尚未在 Web 服务器上注册。您需要手动为 ASP 配置 Web 服务器。NET 2.0,以便您的站点正确运行。

解决办法

命令行执行下面命令

  1. C:\Windows\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i
  2. C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
  3. C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
  4. C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i
  5. C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

执行完成后,继续创建虚拟目录,看看 IIS 默认网站下是否创建了对应项目,如果有,即使再提示错误,也可以忽略。

未能将网站配置为使用 ASP.NET 4.0

点击 创建虚拟目录,出现下面的提示

  1. ---------------------------
  2. Microsoft Visual Studio
  3. ---------------------------
  4. 未能将网站 http://localhost/tps 配置为使用 ASP.NET 4.0。为了使此网站正确运行,您必须将它手动配置为使用 ASP.NET 4.0。ASP.NET 4.0 尚未在 Web 服务器上注册。为了使您的站点正常运行,需要为 ASP.NET 4.0 手动配置您的 Web 服务器。
  5. ---------------------------
  6. 确定 帮助
  7. ---------------------------

参考

问题解决—-未能将网站配置为使用ASP.NET4.0

设置 IIS 的 .NET Framwork 版本

命令行运行

  1. %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

提示下面的信息

  1. Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.0
  2. 用于在本地计算机上安装和卸载 ASP.NET 的管理实用工具。
  3. 版权所有(C) Microsoft Corporation。保留所有权利。
  4. 开始安装 ASP.NET (4.0.30319.0)。
  5. 此操作系统版本不支持此选项。管理员应使用“打开或关闭 Windows 功能”对话框、“服务器管理器”管理工具或 dism.exe 命令行工 具安装/卸载包含 IIS8 ASP.NET 4.5。有关更多详细信息,请参见 http://go.microsoft.com/fwlink/?LinkID=216771。
  6. ASP.NET (4.0.30319.0)安装完毕。

解决的办法就是安装对应的的 .NET Framework 版本。

未能将网站配置为使用 ASP.NET 4.5

Visual Studio 2012 打开项目,提示

  1. ---------------------------
  2. Microsoft Visual Studio
  3. ---------------------------
  4. 未能将网站 http://127.0.0.1/EACC 配置为使用 ASP.NET 4.5。为了使此网站正确运行,您必须将它手动配置为使用 ASP.NET 4.5。ASP.NET 4.0 尚未在 Web 服务器上注册。为了使您的网站正常运行,您需要为 ASP.NET 4.0 手动配置您的 Web 服务器。
  5. ---------------------------
  6. 确定 帮助
  7. ---------------------------

解决办法:

微软网站下载补丁文件,安装即可

http://download.microsoft.com/download/A/0/2/A02C37E0-77F7-448A-BD5C-F66AB1F78DBC/VS11-KB3002339.exe

安装完成,再次打开项目,错误提示消失

此操作系统版本不支持此选项。

同样在创建虚拟目录时,提示

  1. 此操作系统版本不支持此选项。管理员应使用“打开或关闭 Windows 功能”对话框、“服务器管理器”管理工具或 dism.exe 命令行工 具安装/卸载包含 IIS8 ASP.NET 4.5

参考

Win10 兼容性 Visual studio web应用程序 ASP.NET 4.0 尚未在 Web 服务器上注册
对于win10
早期版本Visual studio 需要安装相应补丁:
Visual studio 2010 需要安装:Visual Studio 2010 SP1 和 KB3002340
Visual studio 2012 需要安装:KB3002339
Visual Studio 2013 需要安装:Visual Studio 2013 Update 4
最简单办法就是用Visual Studio 2015

Visual Studio 2010 SP1 已经安装
KB3002340 下载安装

安装补丁完毕后,需要重启电脑,再次运行命令行

  1. %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

出现同样的提示, 再次点击 创建虚拟目录,下面的提示没有了

  1. ---------------------------
  2. Microsoft Visual Studio
  3. ---------------------------
  4. 未能将网站 http://localhost/tps 配置为使用 ASP.NET 4.0。为了使此网站正确运行,您必须将它手动配置为使用 ASP.NET 4.0。ASP.NET 4.0 尚未在 Web 服务器上注册。为了使您的站点正常运行,需要为 ASP.NET 4.0 手动配置您的 Web 服务器。
  5. ---------------------------
  6. 确定 帮助
  7. ---------------------------

而是直接提示

  1. ---------------------------
  2. Microsoft Visual Studio
  3. ---------------------------
  4. 已成功创建虚拟目录。
  5. ---------------------------
  6. 确定
  7. ---------------------------

打开 IIS,可以看见虚拟目录已经创建了

回到 *.csproj,可以看到下面的节点又修改了回来

  1. <UseIIS>True</UseIIS>

保存,以管理员方式打开 VS,可以看到项目已经可以加载成功了!

未能加载文件或程序集 * 或它的某一个依赖项

  1. “* 应用程序中的服务器错误。
  2. 未能加载文件或程序集“KO”或它的某一个依赖项。试图加载格式不正确的程序。
  3. 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
  4. 异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“KO”或它的某一个依赖项。试图加载格式不正确的程序。

解决办法1

参考 未能加载文件或程序集或它的某一个依赖项

打开 IIS,找到应用程序池,设置启动 32 位应用程序,重启网站,再次运行程序即可。

解决方法2

看这个程序运行在哪个 .NET Framework 版本下,比如运行在 .NET Framework 4.5 下,就需要把网站的应用程序池修改为 .NET 4.5

无法在 Web 服务器上启动调试,Web 服务器未能找到请求的资源

创建好虚拟目录以后,IIS 对应站点也有了虚拟目录,F5 调试程序却提示这个错误

这个问题我困扰了很久,搞了好几天(2018.5.11-2018.5.15),我自己新建一个 Web 程序部署在 IIS 上然后运行调试也没有这个问题,后来我猜测是 VS 的管理员账户没有权限去操作 IIS 网站的目录,尝试把网站目录的权限开放,但是还是无效。

运行程序后能够访问 HTML 内容,但是 JS,CSS 这些文件无法加载,VS 也无法调试,只是使用调试模式后,使用 IIS 访问到对应界面会进入调试,让人很心塞。

后来黄天不负有心人,在我和另外一个同事的努力下,终于找到了解决办法。在此非常非常非常感谢下面这篇博客的作者!

win7系统iis7.5上提示404错误

解决方法:

打开或关闭windows功能 —-应用程序开发功能—选择 asp.net选项 和.net扩展性 Internet Information Services 可承载的Web核心 选中

或者:iis7.5—网站-处理程序映射—恢复为父项

1.Internet Information Services 可承载的Web核心

控制面板-程序和功能-启用或关闭 Windows 功能-安装 Internet Information Services 可承载的 Web 核心

如果已经安装可以忽略

2.网站-处理程序映射-恢复为父项

双击进入 处理程序映射 列表页面

到列表页之后,右键,出现下面的界面,选择 恢复为父项

无法在 Web 服务器上启动调试。该 Web 服务器未及时响应

1.问题描述

  1. 无法在 Web 服务器上启动调试。该 Web 服务器未及时响应。可能是因为另一个调试器已连接到该 Web 服努器。
  2. 有关详细信息,请单击”帮助”。

2.问题原因:IIS 抽风

3.问题解决:重启 IIS

无法在 Web 服务器上启动调试。Web 服务器的配置不正确

1.问题描述

启动调试时,报下面的错误

  1. 无法在 Web 服务器上启动调试。Web 服务器的配置不正确。
  2. 请参见有关常见配置错误的帮助。在调试器外部运行网页可能会提供进一步的信息。

2.问题原因

勇哥发现是 Web.config 相关配置缺失引起的(勇哥 NB)

报错的 Web.config 配置是

  1. <system.web>
  2. <compilation debug="true" targetFramework="4.0">
  3. <assemblies>
  4. <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  5. <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  6. <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  7. <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  8. </assemblies>
  9. </compilation>
  10. <system.web>

修改为

  1. <system.web>
  2. <compilation debug="true" targetFramework="4.0">
  3. <assemblies>
  4. <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  5. <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  6. <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  7. <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  8. <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  9. <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  10. <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  11. </assemblies>
  12. </compilation>
  13. <system.web>

问题解决。

无法在 Web 服务器上启动调试。Web 服务器的配置不正确(第二种情况)

问题描述

  1. Unable to start debugging on the web server. The web server is not configured correctly. See help for common configuration errors. Running the web page outside of the debugger may provide further information.
  2. Click Help for more information.
  3. 无法在 web 服务器上启动调试。web 服务器配置不正确。有关常见配置错误,请参阅帮助。在调试器外部运行网页可以提供进一步的信息。
  4. 有关详细信息,请单击“帮助”。

解决办法,修改 web.config 文件下面内容

  1. <compilation defaultLanguage="c#">

修改为

  1. <compilation debug="true" defaultLanguage="c#">

无法在 web 服务器上启动调试。调试失败,因为未启用集成 Windows 身份验证

问题描述

  1. Unable to start debugging on the web server. Debugging failed because integrated Windows authentication is not enabled. Please see Help for assistance.
  2. 无法在 web 服务器上启动调试。调试失败,因为未启用集成 Windows 身份验证。请参阅帮助以获取帮助。

解决办法

IIS-默认网站-属性-身份验证-Windows 身份验证-启用

解决 Win10 下部署每一个 IIS 调试程序都要新建一个网站的问题

在 Win10 下面,使用 IIS 调试程序,需要手动去创建网站,如果有很多个网站,需要一个一个去创建,如果这些网站都用 80 端口,使用一个还需要禁用另外一个。后来我发现新建一个 80 端口的网站后,其他项目创建虚拟目录也会创建到这个网站下。

因此我们是不是只创建一个默认的网站,然后其他所有项目的虚拟目录都在这下面,不就可以了吗?

在 Win7 的 IIS 下,是有一个默认网站的——Default Web Site。但是 Win10 的 IIS 没有默认创建这个网站,因为我们就手动创建这个网站,使用 80 端口,名称为 Default Web Site,映射到某个目录下就可以了。这样操作以后,以后 VS 项目中创建虚拟目录,都会创建到这个网站下,都使用 80 端口和统一 IP 访问,只是虚拟目录不一样。

IIS 网站无法加载 JS 和 CSS

1.问题描述

启动项目,页面变成了下面的样子,好像是样式文件没有加载,失效了。

2.问题原因

查看网页源代码,发现 css,js 都无法加载。

原因是因为安装 IIS 的时候,没有选择 静态内容,重新安装下,刷新页面就可以了

扩展

VS 调试相关问题总结