9

私は使っている

HttpContext.Current.Request.IsAjaxRequest() 

Application_Error メソッドの global.asax で ajax リクエストをチェックする条件ですが、次のエラーが発生します。

'System.Web.HttpRequest' には 'IsAjaxRequest' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'System.Web.Mvc.AjaxRequestExtensions.IsAjaxRequest(System.Web.HttpRequestBase)' にはいくつかの無効な引数があります

以下はコードです:

void Application_Error(object sender, EventArgs e)
    {

        Exception exception = Server.GetLastError().GetBaseException();
        HttpException httpException = exception as HttpException;

        string ErrorMessage = "";
        ErrorMessage = "Application Level Error";


        logger.Error(ErrorMessage, exception);

        if (System.Web.HttpContext.Current.Request.IsAjaxRequest()) //if its an ajax do not redirect
        {
            return;
        }
    else
    {
      Server.ClearError();
      this.Response.RedirectToRoute("Default", new { controller = "Home", action = "Error" });
    }
  }
4

2 に答える 2

29

うまくいったと思います...答えとして投稿します。

試す

new HttpRequestWrapper(System.Web.HttpContext.Current.Request).IsAjaxRequest() 

IsAjaxRequest()HttpRequestBaseanとは異なるan を取りますHttpRequest(関連していないため、少し混乱します)。ラッパーが問題を解決すると思います。

于 2013-01-31T18:30:36.320 に答える
1

私の場合、静的メソッドを使用することに頼りました (私は IRouteConstraint 実装にいました)。

bool isAjax = AjaxRequestExtensions.IsAjaxRequest(httpContext.Request);

include System.Web.Mvcこれを機能させるには、まだ持っていない場合は忘れないでください。

于 2013-06-12T15:59:36.203 に答える