0

例外を生成するファイルの名前を取得するにはどうすればよいですか。

元。addUser.aspx

try
{ 
    SaveUser(); 
}
catch (Exception ex)
{
    response.wrhite(ex.GETPAGE().toString());
}

return addUser.aspx;
4

4 に答える 4

2

ASP.NETのC#の場合、Global.asaxのApplication_Errorイベント中にRequestオブジェクトを介して取得できます。

protected void Application_Error(object sender, EventArgs e)
{
// some code here
String url = Request.Url.ToString()
// some more code here
}
于 2012-12-12T14:15:16.970 に答える
1

正確にはファイルではありませんが、はでclass利用できますex.Source

を使用して、現在のリクエストのURLにアクセスできますHttpContext.Current.Request.Url

于 2012-12-12T14:15:15.777 に答える
1

残念ながら、Exceptionクラスにはあなたが探しているものに関する情報がありません。Yahiaがここで指摘しているように、例外からクラス名を取得できますが、ご存知のとおり、これはASPXパスを見つけるのに実際には役立ちません。

Grahamが指摘しているように、最善のRequest.Url.ToString()方法は、例外ハンドラー内からメソッドを使用することです。コードはページに関連するASPX.cs内から実行されているため、オブジェクトはこれに使用できます。Request

于 2012-12-12T14:42:59.943 に答える
0

これが醜いお尻の答えですが、私はお勧めしません:

例外が実際のページから発生している場合(プロジェクト内の他の場所にあるDLLやその他のクラスではない場合)、StaceTraceにはページファイル名が付けられます。これが私のためにローカルにスローする単純なページとメソッドのトレースです:

at WebApp2.ExceptionPage.BlowUp() in C:\Users\gpeel\Desktop\Documents\Visual Studio 2010\Projects\GPTestBed\WebApp2\Exception.aspx.cs:line 27 at WebApp2.ExceptionPage.Page_Load(Object sender, EventArgs e) in C:\Users\gpeel\Desktop\Documents\Visual Studio 2010\Projects\GPTestBed\WebApp2\Exception.aspx.cs:line 16 

フレーズ「.aspx.cs」の最初のインスタンスを探し、最初の「\」文字に到達するまで文字列の左側に移動することで、そのファイル名を引き出すことができます。これにより、上記の「Exception.aspx.cs」が得られます。

ただし、global.asaxであっても、Application_ErrorのExceptionオブジェクトを処理するためにコードを再実行することを強くお勧めします。そのイベントでServer.GetLastError ()。GetBaseException()を呼び出して、スローされた例外を取得し、Request.Urlを呼び出してページを取得します。

于 2012-12-12T14:49:50.640 に答える