過去 2 週間、私はそれを理解できない場合があります。おそらく、皆さんはすでに同じ問題を経験しているか、それについて聞いたり読んだりして、私を助けることができます。
私は自分のマシンと他のマシンで実行する ASP.NET プロジェクトを持っていますが、QueryString を調整しようとするたびに、System.Exception によってスローされたエラーが発生します。
問題は、この特定のマシン (魔女はオランダにいる) では、Application_Error は決して例外をキャッチせず、例外メッセージをログに保存します (私のアプリケーションで行う必要があるように) が、Web アプリケーションを「壊す」ことはありません...それはただ続く!
どのように、そして何がこれを可能にしますか?
例として、これは私のWeb ページです(HttpCache はこのように呼び出すことはできませんが、Web.HttpCache オブジェクトを使用していることを示すためだけです)。
if( Request.QueryString["user"] != HttpCache["MYAPP-user"] ) {
myApp.DebugWrite("User was tempered.");
throw System.Exception("User was tempered.");
}
そしてglobal.asaxには
...
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (Server.GetLastError() != null)
{
Exception objErr = Server.GetLastError().GetBaseException();
String url = Request.Url.ToString();
String msg = objErr.Message;
String trc = objErr.StackTrace.ToString();
Response.Clear();
StringBuilder html = new StringBuilder();
// fill up html with html code in order to present a nice message
Response.Write(html.ToString());
Server.ClearError();
Response.Flush();
Response.End();
}
}
...
私のテストマシンでは、エラーメッセージとログのメッセージを含むhtmlを常に取得します...この特定のマシンでは、ログにエラーしか表示されませんが、アプリケーションは続行します!!!
web.configはすべてのマシンとまったく同じで、この Web アプリケーションは .NET 2.0 で実行されます
それは何でしょうか?