MVC、ASP、およびお気に入りのロギング/例外処理フレームワークは、目標を非常にうまく処理できると思います。ELMAHとエンタープライズライブラリはどちらも使いやすい例外処理とログ記録を提供するため、お気に入りを選択してください。
注:わかりやすいエラーページを表示したり、質問が示唆するようなHTTP 404または500を返すことはできません。フレンドリーエラーページを返すと、ブラウザに返されるHTTPコードは302になります。これは、フレンドリーエラーページへのリダイレクトです。
フレンドリーエラーページ
ASP.netの一部である昔ながらのweb.config設定を使用して、目標を達成できるようです。開発時にデバッグ情報を表示し、本番環境ではわかりやすいページを表示することに言及します。これにはweb.configのカスタムエラーセクションを使用できます(CustomErrors = "Off"を設定してデバッグ情報を表示します)。これを読んでいない場合、CustomErrors属性に精通していると仮定します。
http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx
表示するエラービューをさらに細かく制御する必要がある場合は、MVCのHandleError属性を使用します。これにより、アクション/コントローラーごとに異なるエラービューを選択できます。
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx
例外ログ
すべての例外に同じように対応したいようです(「エラーをログに記録し、本番の管理者にメールで送信してください」)。この場合、最も簡単なオプションはコードを追加することです
Application_Error(オブジェクト送信者、EventArgs e)
global.asaxで。これは、選択したロギングフレームワークに渡すことができる場所です。
例外のロギング/処理をさらに制御したい場合は、HandleErrorAttributeをサブクラス化してオーバーライドできます
OnException(System.Web.Mvc.ExceptionContext filterContext)
これは、選択したロギングフレームワークに渡すことができる別の場所です。
https://stackoverflow.com/questions/183316/asp-net-mvc-handleerror
これにより、上記のApplication_Error手法よりも多くの制御が可能になります。
一般に、MVCを使用すると、エラーの処理方法を細かく制御できます。このコントロールが必要ない場合は、web.configでエラーページを定義するなど、ASP.netの方法に頼ることができます。