使用ASP.NET,我可以將Response.StatusCode
設置爲(int)HttpStatusCode.Gone
,並且仍然向用戶提供頁面的其餘內容嗎?這似乎是我將StatusCode
設置爲410
的那一刻,該頁面的內容將被刪除並替換爲一條通用消息。我可以返回HTTP 410 GONE並仍然提供頁面內容嗎?
我知道ASP.NET允許我改變默認錯誤頁面的樣式,但我不認爲這就是我想要的情況;我不希望此網頁的內容成爲網站上所有410
錯誤的默認設置。
使用ASP.NET,我可以將Response.StatusCode
設置爲(int)HttpStatusCode.Gone
,並且仍然向用戶提供頁面的其餘內容嗎?這似乎是我將StatusCode
設置爲410
的那一刻,該頁面的內容將被刪除並替換爲一條通用消息。我可以返回HTTP 410 GONE並仍然提供頁面內容嗎?
我知道ASP.NET允許我改變默認錯誤頁面的樣式,但我不認爲這就是我想要的情況;我不希望此網頁的內容成爲網站上所有410
錯誤的默認設置。
您可以設置TrySkipIisCustomErrors
以避免這些自定義錯誤。
看起來像這樣會工作,但是我的目標是.NET Framework 2.0,出於某種原因'TrySkipIisCustomErrors'需要.NET Framework 3.5+。 :( –
好吧,不要緊!它會出現'TrySkipIisCustomErrors'實際上在'.NET Framework 2.0'上(儘管MSDN頁面說的是什麼);該屬性被添加到'.NET 2.0SP1'中。 –
我已經實現了這一點,只需重寫頁面的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)
{
}
}
}
好的,理解,謝謝,並同意 - 這應該只是一個評論,並刪除了「答案」。對於後代:我不清楚目標/意圖是什麼,並試圖根據你的帖子以及[HTTP 410的定義]如何表達(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10的.html)。 – EdSF