2

過去 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 で実行されます

それは何でしょうか?

4

1 に答える 1

-2

コード内のResponseとServer.ClearError()の部分をコメントアウトします。

 //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();
于 2009-09-30T16:05:47.623 に答える