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()接受与 anHttpRequestBase不同的 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 回答