IIS Express本地主机对于第一个请求的加载非常缓慢

时间:2018-10-15 23:44:50

标签: asp.net asp.net-mvc iis visual-studio-2015 iis-express

在关闭之前,请检查一下我尝试过的事情清单。


问题:

  • 我创建一个全新的ASP.NET MVC应用程序,构建该应用程序并运行它->该页面的加载时间为 20-30秒
  • 每次重新构建应用程序然后尝试加载页面时,即使我在上次构建后立即进行加载,它也要花费20秒至20-30秒的时间(即,不是空闲超时问题,我猜是吗?)。

自昨天以来,我一直在努力解决这个问题,我读过我能找到的有关此事的每篇文章/文章,都没有运气。但是,我必须承认我是ASP.NET和Web开发的新手,并且不熟悉IIS配置,因此我可能会错过一些东西。

我尝试过的事情:

  • 已禁用防病毒和防火墙。

  • 通过注释主机文件中的::1 localhost行来禁用IPv6。我的主机文件看起来像这样:

    127.0.0.1       localhost
    # ::1             localhost
    
  • 尝试了不同的浏览器。

  • 更改了应用程序URL的端口。

  • 将应用程序URL从localhost:port更改为127.0.0.1:port,但是当我这样做时,我得到:

      

    错误请求-无效的主机名

  • 卸载并重新安装IIS Express(尝试了多个版本:7.5、8.0和10.0)。

  • 尝试在Internet Information Services\World Wide Web Services下安装“应用程序开发功能”。

  • 启动VS安装程序并进行修复。

环境信息:

  • Windows 7 x64。
  • Visual Studio 2015。
  • .NET 4.5.2。
  • 当前已启用IIS的功能:我正在使用IIS Express,所以不确定是否与此相关。

IIS enabled features

您知道什么可能导致此问题吗?


更新:

我刚刚尝试使用Jexus Manager。如图here所示,从.sln文件中加载配置,启动网站并尝试以下方案:

  • 重新启动网站后浏览网站(Jexus Manager中的两个操作)-> 15至20秒。
  • 在VS中重建解决方案后浏览网站(使用Jexus)-> 30+秒。

2 个答案:

答案 0 :(得分:6)

首次启动Asp.Net MVC应用程序时,发生了很多事情,因此我无法确切指出可能导致瓶颈的一件事,但请尝试遵循一些建议,这些建议可以帮助您缩短启动时间网络应用:

  1. 始终以发布模式从Visual Studio运行您的Web应用程序(我知道您知道它,但仍然必须把它放进去)
  2. 检查您的web.config文件,并确保System.Web\compilation具有debug=false
  3. 检查Application_Start文件中的Global.asax.cs方法以删除不必要的调用
  4. 默认情况下,剃刀视图是在运行时编译的,因此,如果您在运行时未对视图进行任何修改,请确保预先编译了剃刀视图,最好使用RazorGenerator收集您的观点。
  5. 使用探查器(例如Glimpse)对应用程序进行探查。

我希望这可以在启动过程中为您的应用程序带来一些帮助。

答案 1 :(得分:1)

这可能是由于以下原因:

  • 服务器的处理负担很重。
  • 特定的工作进程始终处于空闲状态。
  • 没有新的处理空间。

有一个伪装得很好的选项,称为空闲超时操作,可以在应用程序池高级设置中进行更改。默认情况下,超时操作设置为终止,这意味着托管站点的Windows进程将被终止。如果发生这种终止,则必须构建站点并在下次访问时开始该过程,这会导致首次加载非常缓慢。

如果您仅为服务或少量站点运行专用服务器,那么显然会限制您的样式。在这种情况下,将其设置为0即可。其他人则认为是1740分钟。为什么?这是24年来最小的素数(以小时为单位)。

要在Microsoft Windows Server 2012 R2上将空闲超时操作更改为0,请访问IIS并选择为您的站点提供服务的应用程序池,然后在右侧菜单中选择“高级设置”,找到“空闲超时(分钟)”选项,将其更改为0,然后按OK。

另一种可能的解决方案:安装IIS功能应用程序初始化。然后它应该可以使用以下配置:

  • 在应用程序池上将开始模式设置为始终运行
  • 已启用预加载到网站级别的True