В моем случае я получал только HEAD-запросы в корне сайта /
, что похоже на проверку ботов. Итак, я немного волновался по поводу возвращения 500 или 404.
Подробнее о 405
405 может быть в порядке в соответствии с ответом Альбирео, но вам нужно вернуть принятые глаголы, что-то вроде:
// 405 must include allowable methods.
// https://tools.ietf.org/html/rfc2616#section-14.7
httpContext.Response.StatusCode = (int)HttpStatusCode.MethodNotAllowed;
httpContext.Response.AddHeader( "Allow", "GET" );
302 опция
Глядя на комментарий в коде MVC, который не перенаправляет запрос HEAD:
//only redirect for GET requests, otherwise the browser might not propagate the verb and request
//body correctly.
Похоже, что другой вариант - отправить 302. Должно быть достаточно безопасно вернуть 302 на сайт HTTPS для запросов бот-HEAD к root (что MVC делает для GET). Итак, я реализовал следующее, основанное на том, как это делает MVC:
if( isHead == true && isRoot == true )
{
httpContext.ClearError();
httpContext.Response.Clear();
httpContext.Response.StatusCode = 302;
string url = "https://" + httpContext.Request.Url.Host + httpContext.Request.RawUrl;
httpContext.Response.Redirect(url, endResponse: false);
return;
}
Реализация в global.asax.cs:
protected void Application_Error( object sender, EventArgs e )
{
//Your code here
}