我發現瞭如何處理ASP.NET中的意外錯誤(使用Page_Error和Application_Error方法以及Web中的customErrors指令)的大量信息(即this)。配置。在ASP.NET中向用戶顯示預期的錯誤
但是,我的問題是處理預期錯誤的最佳方法是什麼。例如,我有一個頁面來顯示記錄。每條記錄都有一個允許查看的用戶的特定列表。由於許多用戶可能具有不在所述列表上的「查看記錄」角色,因此我必須在頁面上編寫一些代碼來對其進行過濾。
protected void Page_Load(object sender, EventArgs e)
{
var user = Membership.GetUser();
if (!CanUserViewThisRecord(Request["id"], user.Username)
{
// Display an error to the user that says,
// "You are not allowed to view this message", and quit.
}
else
{
// Display the page.
}
}
處理這類錯誤的最佳做法是什麼?我可以想到幾種可能性:
- 重定向到錯誤頁面。
- 在每個名爲「lblErrorText」的頁面上放置一個標籤。除非出現錯誤,否則保持空白。
- 引發異常並讓標準錯誤處理處理它。
這感覺就像是一個基本問題,爲此我表示歉意,但幾乎所有我發現的內容都引用了意外的例外。這並不是說上述任何一種可能性都很難實現,但如果可能的話,我想使用標準的推薦方法。
注意:謝謝大家的答案。我想澄清一下,用戶將無法點擊允許查看的記錄鏈接。這個問題更多的是爲了防守。例如,由於記錄ID在URL中,所以有人可能會在地址欄中輸入禁止記錄的ID。或者被允許的用戶A可以通過電子郵件發送到不是用戶B的鏈接。看來我可能不會正確地使用「例外」和「錯誤」這兩個詞,但希望這種情況是有道理的。
用戶永遠不會看到他們不允許查看的頁面的鏈接,但該記錄的ID在URL中。我試圖阻止某人可能會手動修改URL以包含不允許的記錄ID的情況。這是我在這裏處理的情況。我想我可以做的就是嘗試在母版頁上放置一個「錯誤文本」控件,這樣我就不必修改每一頁來完成這項工作。 – Mike 2011-02-14 15:33:55
+1用於防止錯誤評論。如果預計你應該已經做了一些事情,那麼'預期錯誤'有點矛盾。恕我直言,手動更改URL但不是預期的。我會認爲這是一個例外,與您在URL中輸入不存在的ID的用戶一樣。 – 2011-02-14 15:34:48