【问题标题】:IIS recycles site every time a css file is modified每次修改 css 文件时 IIS 都会回收站点
【发布时间】:2014-11-17 23:18:53
【问题描述】:

我使用 VS.NET 2013 在我的本地机器上开发了一个站点,我让 IIS 指向文件所在的本地驱动器。我的网站要求我登录,所以我将登录并导航到一个页面。如果我在该页面上看到需要修复的样式,我将编辑 css 文件并尝试在浏览器中刷新页面。但是该站点将我踢开并强制我再次登录,这是由于 .css 文件编辑导致 IIS 站点回收造成的。

有没有办法防止它为 css 文件编辑而回收?我注意到我通常可以修改 .aspx 页面而无需回收。该网站是 ASPX 和 MVC 页面的混合体。

更新

我在 VS.NET 中开发,但我不是通过 IIS Express 在我的机器上运行它,而是通过 IIS 本身。

我只是在编辑 .css 文件,最终在保存了几次后,网站就可以回收了。我还尝试在记事本中编辑 .css 文件,这些编辑最终也会回收该网站。

我确实将 ScottGu 的代码 (http://weblogs.asp.net/scottgu/433194) 添加到 Application_End() 中,该代码记录了关闭原因是什么,它报告的内容如下:

_shutDownMessage=Change in App_Offline.htm
HostingEnvironment initiated shutdown
Change in App_Offline.htm
Change in App_Offline.htm
Change in App_Offline.htm
Change in App_Offline.htm
Change in App_Offline.htm
Change in App_Offline.htm
Change in App_Offline.htm
HostingEnvironment caused shutdown

_shutDownStack=   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
   at System.Web.HttpRuntime.ShutdownAppDomain(String stackTrace)
   at System.Web.HttpRuntime.OnAppOfflineFileChange(Object sender, FileChangeEvent e)
   at System.Web.DirectoryMonitor.FireNotifications()
   at System.Web.Util.WorkItem.CallCallbackWithAssert(WorkItemCallback callback)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

我不知道 app_offline.htm 是如何被修改的,因为我没有触摸它。事实上,我没有名为 app_offline.htm 的文件,因为如果有,我将无法看到站点/登录/等。

听起来我需要一个文件观察器并查看谁在触摸它,但我怀疑其他东西正在触摸 app_offline.htm 以触发回收。

【问题讨论】:

    标签: asp.net asp.net-mvc iis


    【解决方案1】:

    IIS 不应因为 CSS 编辑而重新启动。修改 web.config 文件通常会触发回收。此外,可能会修改 Bin 文件夹的内容。

    另外,请查看What causes an application pool in IIS to recycle?

    【讨论】:

    • 每次修改 .css 文件都可以重现。我同意它不应该,但确实如此。
    • 吉姆所说的是正确的。您如何修改 .css 文件?而且,您如何运行您的网络应用程序?使用 VS?
    • 查看我的更新。我在站点中添加了代码来跟踪站点关闭的原因。它说这是因为 App_Offline.htm 被修改了,但我的网站上没有该文件,所以必须有其他东西触摸它才能触发回收。
    【解决方案2】:

    虽然 IIS 和 ASP.Net默认情况下不处理 css 文件,但这只是一个可以更改的选项。有时,您想使用 ASP.Net 在将其发送到浏览器之前更改服务器上的 css 文件(尽管通常有更好的方法来完成相同的事情)。

    打开 IIS 管理器,在左侧“连接”窗格的树中单击您的站点,然后在右侧的 IIS 部分中找到 Handler Mappings 图标。打开它,看看你是否在任何地方都有*.css 路径的映射。

    此外,您可以在 web.config 文件中定义处理程序。查看您的 web.config 并查看您是否为 css 文件定义了处理程序(尽管此处的任何内容也应显示在 IIS 管理器视图中)。

    【讨论】:

    • 没有处理程序映射到 *.css。不过,我确实使用 ASP.NET MVC BundleConfig.cs 来创建 js 和 css 包。我想知道这是否有效果。
    猜你喜欢
    • 2020-01-11
    • 2012-08-19
    • 2015-01-28
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2010-10-09
    相关资源
    最近更新 更多