0

我有一个 ASP.NET Forms 应用程序,框架版本 4.5,Windows 2008 Server R2 Standard 中的 IIS 7.5。偶尔我会得到一个空白页(下面的屏幕截图)。当我在 IIS 中重置网站时,问题得到解决..但在 2/3 天后再次发生。Web.config 文件顶部包含“default.aspx”作为默认文件。

在我的应用程序中,default.aspx 是一个在应用程序启动时创建的空文件——其中不包含任何代码/内容。我的猜测是 IIS 将空白页保存在缓存中并有时会提供空白页。解决方案中的所有其他页面都是没有物理存在的虚拟页面。但是,点击其他 URL 会正确加载内容。

我已经做了以下没有解决问题的尝试:

  1. IIS 输出缓存 - 防止用户模式和内核模式的所有缓存。
  2. 在 Global.asax 中添加了以下代码块,以解决加载默认文档的问题

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
      var app = (HttpApplication)sender;
      if (app.Context.Request.Url.LocalPath.EndsWith("/"))
      {                   
      app.Context.RewritePath(string.Concat(app.Context.Request.Url.LocalPath, "default.aspx"));
      }
    }
    

有人能想出一些线索吗?提前致谢 :)

空白页面截图

4

1 回答 1

0

我认为问题的出现是因为应用程序在虚拟页面方面的设计方式。应用程序中有一个“default.aspx”虚拟页面,根文件夹中有一个同名的静态文件(只是一个空文件)。我最好的猜测是处理程序有时会提供静态页面而不是虚拟页面,因此会显示空白屏幕。

我部署了一项工作,将静态文件 default.aspx 替换为 index.html。为了确保在加载 index.html 文件的情况下重定向到默认页面,添加了以下代码:

    <meta charset="UTF-8">
    <meta http-equiv="refresh" content="0; url=default.aspx" />

    <script>
        window.location.href = "default.aspx";
    </script>

到目前为止它看起来不错,但我会密切关注应用程序的行为。

于 2016-06-09T08:15:53.713 回答