Свойство HttpContext.Текущий.Запрос.Ошибка IsAjaxRequest() в MVC 4

Я использую

HttpContext.Current.Request.IsAjaxRequest() 

условие для проверки запроса ajax в global.asax в методе Application_Error, но я получаю следующую ошибку:

'.Сеть.HttpRequest' не содержит определения для "IsAjaxRequest" и лучшая перегрузка метода расширения - Система.Сеть.В MVC.AjaxRequestExtensions.IsAjaxRequest (System.Сеть.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" });
    }
  }

2 ответов


думаю, это сработало... Постинг как ответ.

попробовать

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

IsAjaxRequest() принимает HttpRequestBase что это HttpRequest (и не связано, так что это немного запутанно). Думаю, обертка исправит твою проблему.


в моем случае я прибегнул к использованию статического метода (я был в реализации IRouteConstraint)

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

для этого, чтобы работать, не забудьте include System.Web.Mvc если у вас его еще нет.