0

ダウンしている可能性があるデータベースに接続しようとしたとき、または MVC 4 で正しくない接続文字列が指定されたときに、エラーを適切に処理するにはどうすればよいですか?

Web.config に文字列があり、データベースにアクセスする方法は、次のように、各コントローラーで DBContext から派生したクラスをインスタンス化するだけです。

private DBEntities db = new DBEntities("database");

データベースが稼働していてすべてが正しい場合、これは正常に機能しますが、そうでない場合、私の Web サイトのページに次のエラーが表示されます。

Exception Details: System.ComponentModel.Win32Exception: The network path was not found

明らかに私はこれを表示したくありません。私がしたいことは、エラーへtry catchの道を持ち、カスタムエラーページを表示することです (404 Page Not Found に似ています)。

ありがとうございました。

4

3 に答える 3

1

それはどこにprivate DBEntities db = new DBEntities("database");あり、いつ呼び出されるかによって異なりますが、次の理由だけではありません。

try {
  private DBEntities db = new DBEntities("database");
} catch (Exception ex) {
  //do something here
}
于 2012-12-04T14:14:16.123 に答える
1

関数で初期化を行う

private DBEntities db;

// then in your function attempt to initialise
try{

db = new DBEntities("database");

db.Connection.Open();

}
catch(Exception ex){

if(db.Connection != ConnectionState.Closed){

db.Connection.Close();
db.Dispose();

//go to error page
}

}
于 2012-12-04T14:15:16.100 に答える
1

まず、共有ビュー フォルダーに「Error.cshtml」ビューを追加します。のモデル タイプを指定します。 System.Web.Mvc.HandleErrorInfo

次に、web.config ファイルに以下を追加します。

<system.web>
  <customErrors mode="On" defaultRedirect="/Error" />
</system.web>

これにより、例外が発生した場合にエラー ビューにリダイレクトされます。

あとは、エラー ページのスタイルを設定するだけです。

他の投稿で提案されているように、catch ブロックで { } catch { } を試してみることをお勧めします。「データベース接続を確立できませんでした」などのユーザーフレンドリーなメッセージで再スローしてください。

ここでの完全な議論/説明: http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc

于 2012-12-04T14:21:21.380 に答える