После попытки настроить мой сайт для Инструментов Google для веб-мастеров, я обнаружил, что моя пользовательская страница ASP.NET 404 не возвращала код статуса 404. Он отобразил правильную страницу и сказал браузеру, что все в порядке. Это считается мягким 404 или ложным 404. Google не нравится это. Поэтому я нашел много статей по этой проблеме, но решение, которое я хочу, похоже, не работает.
Решение, которое я хочу использовать, заключается в добавлении следующих двух строк в код, стоящий за методом Page_Load на пользовательской странице 404.
Response.Status = "404 Not Found";
Response.StatusCode = 404;
Это не работает. Страница все еще возвращает 200 OK. Однако я обнаружил, что если я буду жестко закодировать следующий код в код проекта, он будет работать правильно.
<asp:Content ID="ContentMain" ContentPlaceHolderID="ContentPlaceHolderMaster" runat="server">
<%
Response.Status = "404 Not Found";
Response.StatusCode = 404;
%>
... Much more code ...
</asp:content>
Страница использует мастер-страницу. И я настраиваю страницы пользовательских ошибок в моем web.config. Я бы предпочел использовать код позади опции, но я не могу заставить его работать, не вставляя строчный код взлома в дизайн/макет.