37

ASP.NET 4.0およびIIS7でHTTPハンドラーを作成していますが、ファイルが見つからない状態を生成する必要があります。

次のコードをMathewMcDonaldの新しい本であるProASP.Net4からC#2010でコピーしました(応答変数は現在のHttpResponseのインスタンスです)。

response.Status = "File not found";
response.StatusCode = 404;

ただし、最初の行で実行時エラーが発生することがわかりましたHTTP status string is not valid.

上記の行の代わりに、次を使用する場合:

response.Status = "404 Not found";

その後、すべてが正常に機能しているようです。実際、response.StatusCodeが自動的に404に設定されていることもわかります。

私の問題は、これが本番サーバーで失敗したくないということです。ですから、これを達成するための「正しい」方法を理解できれば、私はずっと気分が良くなるでしょう。最初のアプローチがMathewMcDonaldで機能したのに、私では機能しなかったのはなぜですか?そして、2番目のアプローチは常に信頼できるものになるのでしょうか?

誰かが何かヒントを提供できますか?

4

1 に答える 1

66

これは、Statusプロパティがメッセージだけでなく、クライアントに送信される完全なステータス ラインであるためです。

次のいずれかを書くことができます:

response.Status = "404 File not found";

または、できれば:

response.StatusCode = 404;
response.StatusDescription = "File not found";

そのドキュメントによると、HttpResponse.StatusDescriptionHttpResponse.Statusを優先して非推奨になっていることに注意してください。

于 2011-01-09T10:06:16.783 に答える