【问题标题】:ASP.NET Forms application displays blank "default.aspx" page sporadically instead of loading/showing contentsASP.NET Forms 应用程序偶尔显示空白的“default.aspx”页面,而不是加载/显示内容
【发布时间】:2016-06-08 09:22:36
【问题描述】:

我有一个 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"));
      }
    }
    

有人能想出一些线索吗?在此先感谢:)

Screenshot of the blank page

【问题讨论】:

  • 从控制面板 -> 在窗口功能开启或关闭 -> 互联网信息服务 -> 普通 http -> 选中静态内容复选框并验证所有要选中的复选框。
  • @Nazir,感谢您的回复。无法真正遵循您在 2008 服务器中提到的路径。但是,我可以在网站的 Handler Mapping 列表底部看到处理程序名称 StaticFile。
  • 在运行命令类型(控制面板)然后点击右侧打开时卸载程序选择“打开或关闭窗口功能”然后弹出dailog打开“互联网信息服务”->常见的 http 功能 -> 选中静态内容复选框
  • 谢谢,我发现静态内容安装在服务器管理器 -> Web 服务器 (IIS) -> 通用 HTTP 功能下。
  • 您的问题已解决,请告诉我?

标签: c# asp.net default-document


【解决方案1】:

我认为问题的出现是因为应用程序在虚拟页面方面的设计方式。应用程序中有一个“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>

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

【讨论】:

    猜你喜欢
    • 2017-03-31
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多