2016-06-08 67 views
0

我在Windows 2008 Server R2 Standard中有一個ASP.NET Forms應用程序,Framework版本4.5,IIS 7.5。偶爾我會得到一個空白頁面(下面的截圖)。當我在IIS中重置網站時,問題得到解決..但是在2/3天內再次發生。 Web.config文件在頂部包含「default.aspx」作爲默認文檔。ASP.NET窗體應用程序零星地顯示空白「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

+0

從控制面板 - >在窗口功能打開或關閉 - >互聯網信息服務 - >普通http - >檢查靜態內容複選框,並驗證所有複選框進行檢查。 –

+0

@Nazir,謝謝你的回覆。不能真正遵循你在2008年提到的服務器的路徑。但是,我可以在網站的Handler Mapping列表底部看到處理程序名稱StaticFile。 – shamal

+0

在運行命令類型(控制面板),然後點擊卸載程序在右側打開時選擇「打開或關閉窗口功能」,然後彈出dailog打開「互聯網信息服務」 - >常見http功能 - >檢查靜態內容複選框 –

回答

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> 

到目前爲止,它看起來不錯,但我會留意的應用程序的行爲。