无法将.net 3.5网站添加到IIS Express

所以,我的问题是我有一个相当大的ASP.NET 3.5项目,我试图使用IIS Express安装在本地运行。 我是团队中使用IIS Express运行此项目和其他项目的众多开发人员之一,我实际上每天运行.NET 4.0站点(使用本地SSL),没有任何问题。 作为参考,我的机器使用Microsoft Visual Studio 2010运行Windows 7 Ultimate 64位,我是本地计算机的管理员。 Visual Studio以管理权限运行,我确保inetmgr中列出的所有应用程序池都在运行。

这是我尝试在本地运行项目时获得的工作流程:

  • 当我第一次运行我的项目时,或者如果我删除Microsoft WebMatrix中列出的任何站点(IIS Express的配置实用程序,类似于inetmgr),我得到以下消息序列:

(1)Microsoft Visual Studio的Yes-No对话框指出,

The local IIS URL http://localhost:2000/site/path/ specified for Web project My.Web.Project has not been configured. In order to open this project the virtual directory needs to be configured. Would you like to create the virtual directory now?

(2)此时,我点击“是”。 一个VS的中间窗口弹出一个加载栏,大约50%,然后弹出一个来自VS的警告对话框,阅读:

Configuring Web http://localhost:2000/ for ASP.NET 3.5 failed. You must manually configure this site for ASP.NET 3.5 in order for the site to run correctly. Visual Studio cannot detect whether this virtual root has been configured for use with ASP.NET 2.0 The likely cause is that you do not have sufficient privileges to access the IIS metabase. You may need to manually configure this site for ASP.NET 2.0 in order for your site to run correctly.

(3)此时我只能单击“确定”或“帮助”,所以我单击“确定”继续。它继续为我的解决方案中配置为在本地IIS Express中运行的任何其他项目执行相同的过程。

  • 当我尝试通过按CTRL-F5本地运行该站点时,出现一个错误对话框,显示Unable to launch the IIS Express Web Server
  • 当我尝试在Microsoft Web Matrix中查看有关所述站点的详细信息时,我收到来自WebMatrix的错误消息,其中显示: An error caused WebMatrix to shut down. Error message: Invalid application pool name An error caused WebMatrix to shut down. Error message: Invalid application pool name
  • 此错误消息是正确的,除非我查看IIS Express配置文件(C:\%User Dir%\ My Documents \ IISExpress \ config \ applicationhost.config),在部分中,每个应用程序都有一个 tag只指定了一个path属性,没有指定applicationPool属性。 (相反,在IISExpress上运行的4.0应用程序指定了此属性)。
  • 一旦我将applicationPool属性添加到站点,我就可以在WebMatrix中打开/查看/编辑其详细信息,但仍然无法在本地运行它。

那么,我的错误是什么,或者我的机器上哪些配置不正确阻止我运行,而不是任何其他具有相同代码的开发人员?

对于应用程序,如果未明确指定appPool,则将使用默认的apppool。 在IIS Express中,默认应用程序池是Clr4IntegratedAppPool

如果您的应用程序不是.net 4.0应用程序,请相应地进行设置。 如果您的应用程序是2.0应用程序,则将appPool设置为“Clr2IntegratedAppPool”。

下面给出了IIS Express配置中预定义的应用程序池。

 Clr4IntegratedAppPool Clr4ClassicAppPool Clr2IntegratedAppPool Clr2ClassicAppPool 

所以,当我写完这个问题时,我实际上解决了这个问题。 当我确定配置文件的细节时,我意识到项目的设置方式,在配置的第一个站点中定义了两个应用程序(一个是提供数据检索的服务,另一个是完整的网站),所以我只为三个应用程序中的两个提供了缺少的applicationPool属性。

如果我能弄清楚为什么它缺少所需的appPool属性,我会更新这个答案。 希望这也有助于其他人!

我在VS 2017中,在未安装IIS的计算机上遇到此问题。 因此,找到应用程序池设置更难。

我曾尝试将网站滚动回.NET Framework 2.0。 更多的工作,而不是它的价值,所以放弃了那个分支,然后回到我之前使用4.6.1的git分支。 但是IIS Express一直试图以2.0运行!

终于找到了它的位置。 它位于解决方案文件夹下:.vs \ config \ applicationhost.config

然后找到我的站点(“CBR_Report”),并设置:applicationPool =“Clr2IntegratedAppPool”。