1

現在のURLを取得するのは簡単です

HttpContext.Current.Request.Url.ToString();

実際、これはこの非常によく似た質問に対する受け入れられた答えです。 ただし、アプリケーション全体のエラー処理を実装し、未処理の例外が発生したときに返送される電子メールを生成するErrorControllerがあります。上記のコードスニペットをエラーコントローラーに実装すると、返されるURLは次のようになります。

http://.../Error/GenericError?aspxerrorpath=/Controller/ErrorProneAction

実際にエラーをスローしたページのURLを取得するにはどうすればよいですか?つまり、もっと似たようなもの

http://.../Controller/ErrorProneAction
4

2 に答える 2

1

あなたのコメントによると-あなたはvoid Application_OnError(object sender, EventArgs e)あなたのglobal.asaxのような機能を持っていますか?もしそうなら、あなたはあなたが探している情報を得ることができるはずです。

protected void Application_OnError(object sender, EventArgs e)
{
    var app = (MvcApplication)sender;
    var context = app.Context;
    string path = context.Request.PathWithQueryString;
    ...

のようなものを提供し/controllerOrRoute/action?query=valます。または、RawUrlまたはUrlプロパティを使用して、基本的に同じものを取得できます。アプリケーションを起動して、何が生成されるかを確認しました。これがあなたが求めているもののようです。

編集:MVC3について上記をテストしたことに注意してください。

于 2012-11-20T17:28:02.507 に答える
1

このブログ投稿を参照してください:

http://blog.gauffin.org/2011/11/how-to-handle-errors-in-asp-net-mvc/

にパラメータを渡すActionResultと、aspxerrorpathクエリ文字列値の値が取得されます。

public ActionResult NotFound(string url)
{
  var originalUri = url ?? Request.QueryString["aspxerrorpath"] ?? Request.Url.OriginalString;
}
于 2012-11-20T15:34:25.103 に答える