簡體   English   中英

如何在ASP.NET頁中以編程方式生成401錯誤

[英]How to generate an 401 error programmatically in an ASP.NET page

如您所見,這是非Web開發人員提出的問題。 我希望有一個ASPX頁面,在某些情況下,該頁面可以從代碼生成401錯誤。 理想情況下,它將顯示IIS標准頁面。

Response.StatusCode = 401;
Response.End();

設置Response.StatusCode ,然后設置-如果需要停止執行,請調用Response.End()

我想我還是更喜歡:

throw new HttpException(401, "Auth Failed")

我認為Response.StatusCode方法不會觸發在web.config文件中定義的自定義錯誤,例如

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
     <error statusCode="401" redirect="AuthFailed.htm" />
     <error statusCode="403" redirect="NoAccess.htm" />
     <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

引發新異常肯定會觸發自定義錯誤。

另外,您可能正在使用整個應用程序范圍的錯誤日志記錄工具,例如ELMAH或其他工具,我也不認為Response.StatusCode方法也將記錄在此處。

注意:我現在看到的問題是,理想情況下,應該顯示標准的IIS錯誤頁面。 顯然, 不需要自定義錯誤頁面。 在這種情況下,我將使用Response.StatusCode方法。

根據MSDN ,您應該可以使用以下內容。

Throw New HttpException(401, "Auth Failed")

編輯在看到其他響應后,設置狀態碼會更合適。

另一條評論。

如果頁面的一部分已經被寫入輸出緩沖區,那么清除任何緩沖的內容很重要,否則頁面可能無法正確顯示。

這很可能在模板化環境中。 例如母版頁...

Response.ClearContent();
Response.StatusCode = 401;
Response.End();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM