Ответ на запрос HEAD в asp.NET MVC 3

Есть ли способ в Asp.NET MVC 3 отвечать на запросы HEAD универсальным способом, в отличие от добавления атрибута HEAD к отдельным методам.

1 ответ

Решение

Создать маршрут с RouteConstraint вот так:

routes.MapRoute(
    "HEAD Requests",
    "{*fullPath}",
    new { controller = "Head", action = "Index" },
    new { fullPath = new MustBeHeadRequest() }
);

public class MustBeHeadRequest : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return httpContext.Request.HttpMethod.ToLowerInvariant() == "head";
    }
}

Поместите маршрут в или около вершины ваших маршрутов. Когда приходит запрос HEAD, он будет перенаправлен на действие Index в HeadController.

Другие вопросы по тегам