2013-09-29 41 views
2

使用ASP.NET,我可以將Response.StatusCode設置爲(int)HttpStatusCode.Gone,並且仍然向用戶提供頁面的其餘內容嗎?這似乎是我將StatusCode設置爲410的那一刻,該頁面的內容將被刪除並替換爲一條通用消息。我可以返回HTTP 410 GONE並仍然提供頁面內容嗎?

我知道ASP.NET允許我改變默認錯誤頁面的樣式,但我不認爲這就是我想要的情況;我不希望此網頁的內容成爲網站上所有410錯誤的默認設置。

+0

好的,理解,謝謝,並同意 - 這應該只是一個評論,並刪除了「答案」。對於後代:我不清楚目標/意圖是什麼,並試圖根據你的帖子以及[HTTP 410的定義]如何表達(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10的.html)。 – EdSF

回答

1

您可以設置TrySkipIisCustomErrors以避免這些自定義錯誤。

+0

看起來像這樣會工作,但是我的目標是.NET Framework 2.0,出於某種原因'TrySkipIisCustomErrors'需要.NET Framework 3.5+。 :( –

+0

好吧,不要緊!它會出現'TrySkipIisCustomErrors'實際上在'.NET Framework 2.0'上(儘管MSDN頁面說的是什麼);該屬性被添加到'.NET 2.0SP1'中。 –

2

我已經實現了這一點,只需重寫頁面的OnInit方法並強制它返回所需的HTTP狀態代碼。在創建自定義錯誤頁面時,我必須使用這種技術來確保返回正確的HTTP狀態代碼。

using System; 
using System.Web.UI; 

namespace Website 
{ 
    public partial class _410 : Page 
    { 
     protected override void OnInit(EventArgs e) 
     { 
      base.OnInit(e); 
      Response.Buffer = true; 
      Response.StatusCode = 410; 
      Response.Status = "410 Gone"; 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 
    } 
} 
相關問題