【问题标题】:Application_Start vs serviceAutoStartProvidersApplication_Start 与 serviceAutoStartProviders
【发布时间】:2015-02-17 10:14:37
【问题描述】:

我正在使用 IIS7.5 强制我的 Web 应用程序自动加载 (startMode="AlwaysRunning"),我现在想预加载我的缓存数据。我有点困惑,因为两种方法似乎相同:

  1. 在 global.asax 中使用 Application_Start
  2. 在 IIS 配置文件中使用 serviceAutoStartProviders

它们看起来相当多余并且做同样的事情。如果是,我想我宁愿使用Application_Start,也不愿在 IIS 配置文件中创建代码依赖项。有什么建议吗?

【问题讨论】:

    标签: c# asp.net iis iis-7.5


    【解决方案1】:

    global.asax 中的Application_Start 在应用程序收到它的第一个请求(第一个用户或自动启动)时被触发,因此它不用于启动站点。

    使用serviceAutoStartProviders 开始 http://www.asp.net/whitepapers/aspnet4#0.2__Toc253429241

    IIS 应用程序预热模块更易于使用 http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

    【讨论】:

    • 嗯,这让我感到困惑,通常它需要第一个请求来启动一个站点,从而导致 Application_Start。 serviceAutoStartEnabled="true"时不会自动发生吗?我不明白如果没有Application_Start 在之前或之后不久发生,serviceAutoStartProviders 怎么会发生。
    • 自动启动发送一个虚假的网站启动请求,这将触发Application_Start。您可以设置initializationPage 以在启动时调用不同的页面。
    • 再解释一下,如果serviceAutoStartProviders运行但Application_Start直到第一个请求才运行,这意味着在自动启动代码中还没有Web应用程序上下文,因此@987654332 @ 未初始化,这意味着没有用于缓存数据的全局 Cache 对象。然而还是有的。所以它暗示上下文是活着的,这意味着应用程序是活着的,这意味着Application_Start一定已经发生了。
    • D'oh,好吧,你说得对,它实际上根本不适合我的目的 -> serviceAutoStartProviders 上的文档 -> “此接口主要供非 WCF 应用程序使用-HTTP 应用程序。想要预加载 ASP.NET Web 应用程序的 ASP.NET 开发人员应使用 IIS 7.0 中的模拟 HTTP 请求并结合 Global.asax 文件中的 Application_Start 方法。"
    • 我被 Scott 的博文弄糊涂了:weblogs.asp.net/scottgu/…
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多