Я нашел ответ Пита Киркхама очень полезным.И я думаю, что это должно быть помечено как решение.
Это мой код в соответствии с ним:
/// <summary>
/// Determines whether the request is a Json Request
/// </summary>
public static bool GetIsJsonRequest(HttpRequest request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
bool rtn = false;
const string jsonMime = "application/json";
if (request.AcceptTypes!=null)
{
rtn = request.AcceptTypes.Any(t => t.Equals(jsonMime, StringComparison.OrdinalIgnoreCase));
}
return rtn || request.ContentType.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries).Any(t => t.Equals(jsonMime, StringComparison.OrdinalIgnoreCase));
}
--- ОБНОВЛЕНИЕ ---
Следуя @Предложение Mvision это версия MVC:
public static bool GetIsJsonRequest(HttpRequestBase request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
bool rtn = false;
const string jsonMime = "application/json";
if (request.AcceptTypes!=null)
{
rtn = request.AcceptTypes.Any(t => t.Equals(jsonMime, StringComparison.OrdinalIgnoreCase));
}
return rtn || request.ContentType.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries).Any(t => t.Equals(jsonMime, StringComparison.OrdinalIgnoreCase));
}
Если вам нужно использовать этот метод как в asp.net classic, так и в MVC, то второй - это рекомендуемый.Чтобы преобразовать HttpRequest
в HttpREquestBase
, просто оберните его HttpRequestWrapper
:
public static bool GetIsJsonRequest(HttpRequest request)
{
return GetIsJsonRequest(new HttpRequestWrapper(request));
}