Asp.net mvc IIS 8.5-应用程序初始化不工作

Asp.net mvc IIS 8.5-应用程序初始化不工作,asp.net-mvc,iis,iis-8.5,Asp.net Mvc,Iis,Iis 8.5,我已经安装了应用程序初始化,将网站的应用程序池启动模式设置为“始终运行”,并在网站的高级设置中设置Preload Enabled=“True” 但是,如果我手动回收应用程序池并等待10秒钟,那么当我重新加载网站时,我仍然需要再等待10秒钟,以便网站预热。这表示网站未启动 查看TaskManager,我可以看到应用程序池一直在运行——即使在循环之后也是如此。然而,在我向网站提出自己的请求之前,内存使用率非常低 我注意到的一点是,根据以下链接,我的网站的高级设置中没有“自动启动”设置: 如何使应用

我已经安装了应用程序初始化,将网站的应用程序池启动模式设置为“始终运行”,并在网站的高级设置中设置Preload Enabled=“True”

但是,如果我手动回收应用程序池并等待10秒钟,那么当我重新加载网站时,我仍然需要再等待10秒钟,以便网站预热。这表示网站未启动

查看TaskManager,我可以看到应用程序池一直在运行——即使在循环之后也是如此。然而,在我向网站提出自己的请求之前,内存使用率非常低

我注意到的一点是,根据以下链接,我的网站的高级设置中没有“自动启动”设置:


如何使应用程序自动启动?

尝试应用程序初始化设置:

我也遇到过类似的问题,并且非常努力地使用IIS 8.5 Windows Server 2012 R2。在参考了如此多的站点之后,IIS中的所有内容都已正确设置,但是却错过了应用程序初始化设置。请参阅以下链接的设置部分


结果是一大堆设置都必须正确。您将按照以下链接完成所有步骤以安装相关组件并进行各种配置更改:

我缺少的关键部分是Web.config中的一条说明,如下所示。我让它只是“/Login”,这是一个有效的路径,但当我把它切换到“/[Controller]/[Action]”时,它就工作了

此路径的优点是,您可以创建一个自定义操作,该操作也将命中数据库(初始化实体框架),并执行您希望的任何其他缓慢初始化。对我来说,我只是从DB表中读取了一条记录,这样我就可以自动启动ASP.NET,还可以节省预热EF所需的几秒钟:)


这些文章非常好:

但是在我的例子中,安装应用程序初始化角色时出现问题

检查IIS应用程序的模块列表。确保应用程序初始化模块存在

我需要卸载/重新安装此模块

我不知道发生了什么,因为它一开始似乎有效,但几周后在开发过程中停止了。再多的修补/返工也没能修复它,我开始怀疑我从来没有真正看到过它起作用


卸载/重新安装应用程序初始化模块角色后,问题已解决。

如果有人想知道当您有多个区域要初始化时,在MVC中该怎么做,您需要将该区域放在开始位置,所有这些都放在根web.config文件中。我在尝试将其放入该区域的web.config时被卡住了一段时间。此外,它与混合应用程序完全兼容

<add initializationPage="/NotMVC.aspx" />
<add initializationPage="/Area1/Controller/Action" />
<add initializationPage="/Area2/Controller/Action" />

可以在多个.config位置设置这些设置

  • 计算机应用程序主机.config(c:\windows\system32\inetsrv\config)
  • Website web.config(默认网站的c:\inetpub\wwwroot)
  • 应用程序web.config
  • 我尝试了所有方法,但只成功地配置了3,即应用程序web.config。 我的特定用例是在WCF服务上调用GET方法

    应用程序初始化的步骤也可以在其他答案中找到。这里有一个是最有用的

  • 安装Windows功能应用程序初始化(
    Web AppInit
  • 设置IIS应用程序池
    Start mode=AlwaysRunning
  • 设置IIS应用程序
    Preload Enabled=true
  • 添加到应用程序web.config

    <system.webServer>     
        <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true">
            <add initializationPage="/Service.svc/Method/Parameter" />
        </applicationInitialization>
    </system.webServer> 
    

    我不会在
    初始化页面
    参数中包含
    /path1/path2

    你有过这样的经历吗?我最终做到了。一切都必须是绝对正确的,自动启动URL必须是一个完整的控制器和操作参考(使用MVC时)。我希望我刚刚发布的答案对您有所帮助。还要注意,如果站点配置为需要SSL,初始化将无法工作。看见解决方法:不需要SSL+URL重写。看见您通常会用服务器的规范名称替换localhost。添加控制器操作对我不起作用。真奇怪,我同事的机器上只有控制器工作。在我的机器上,当我回收应用程序池时,似乎应用程序初始化模块甚至没有被触发。我遵循了完全相同的步骤,出于某种原因,当我回收应用程序池或重新启动IIS时,此应用程序初始化模块没有击中我的控制器。不确定我遗漏了什么…这个“应用程序初始化角色”在哪里?我只看到ApplicationInitializationModule。。。
    <system.webServer>     
        <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true">
            <add initializationPage="/Service.svc/Method/Parameter" />
        </applicationInitialization>
    </system.webServer> 
    
    domain.com/path1/path2/Service.svc