ASP.NET, определите, является ли тип содержимого запроса для JSON - PullRequest
1 голос
/ 15 января 2010

Я хотел бы реализовать метод расширения IsJsonRequest (): bool для типа HttpRequestBase. В общих чертах, как должен выглядеть этот метод, и есть ли какие-либо ссылочные реализации?

Это частный API.

Редактировать:

Предложение; проверить, является ли заголовок x-required-with "xmlhttprequest"?

Ответы [ 3 ]

4 голосов
/ 15 января 2010

Это проверит тип содержимого и заголовок X-Requested-With, которые почти все фреймворки JavaScript используют :

public bool IsJsonRequest() {
    string requestedWith = Request.ServerVariables["HTTP_X_REQUESTED_WITH"] ?? string.Empty;
    return string.Compare(requestedWith, "XMLHttpRequest", true) == 0
        && Request.ContentType.ToLower().Contains("application/json");
}
4 голосов
/ 14 мая 2011

У меня были те же проблемы, но по какой-то причине $ .get jQuery не отправлял тип контента. Вместо этого мне пришлось проверить в Request.AcceptTypes «application / json».

Надеюсь, что это поможет другим с такой же проблемой в будущем.

0 голосов
/ 15 января 2010

Поскольку это частный API, у вас есть контроль над типом контента для JSON, поэтому просто проверьте, что это согласованное значение.

, например

public static bool IsJsonRequest(this HttpRequestBase request)
{
  bool returnValue = false;
  if(request.ContentType == "application/json")
  returnValue = true;

  return returnValue;            
}
...