web-dev-qa-db-ja.com

ASP.NETページでプログラムによって401エラーを生成する方法

ご覧のとおり、これは非Web開発者からの質問です。特定の状況下で、コードから401エラーを生成する可能性があるASPXページが必要です。理想的には、IIS標準ページを表示します。

34

Response.StatusCode を設定し、次に-実行を停止する必要がある場合は Response.End() を呼び出します。

56
Jon Skeet
Response.StatusCode = 401;
Response.End();
58
Mark Cidade

私はまだ好きだと思います:

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メソッドを使用します。

44
Brian Ferguson

[〜#〜] msdn [〜#〜] によると、以下を使用するだけでよいはずです。

Throw New HttpException(401, "Auth Failed")

Edit他の応答を確認した後、ステータスコードの設定がより適切になります。

12
Mitchel Sellers

1つの追加コメント。

ページの一部が既に出力バッファーに書き込まれている場合、バッファーされたコンテンツをクリアすることが重要です。そうしないと、ページが正しく表示されない可能性があります。

これは、テンプレート化された環境ではよくあることです。例えばマスターページ...

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