Я новичок в ядре ASP. NET, так что я надеюсь, что вы терпите меня по этому поводу. Это похоже на этот неотвеченный вопрос .
Когда я тестирую новый проект C# MVC и ввожу неправильный URL-адрес, информации нет. Просто пустая страница.
Чтобы решить эту проблему, я адаптировал startup.cs
, добавив UseStatusCodePagesWithReExecute()
, чтобы возвращать stati c 404. html page. Это работает.
Пока все хорошо.
Теперь я кодирую базовый c логин c. В целях тестирования я звоню return NotFound();
, когда параметры публикации отсутствуют. Это ничего не возвращает. Я знаю, что 404 - неправильный ответ, но я видел NotFound();
в сгенерированном коде и думаю, что это возвращает пустые страницы, поэтому я хочу решить эту проблему, прежде чем двигаться дальше.
1017 *, похоже, для этого не вызывается. Я не уверен, как это проверить.
Есть ли способ отменить поведение NotFound();
, чтобы получить 404. html как-то?
Это Учебник Я использовал для создания своего проекта.
Редактировать: Основываясь на комментариях Александра Поволоцкого, я заменил NotFound();
на Redirect("~/404.html");
. Это работает.
// Wherever you want to return your standard 404 page
return Redirect("Home/StatusCode?code=404");
public class HomeController : Controller
{
// This method allows for other status codes as well
public IActionResult StatusCode(int? code)
{
// This method is invoked by Startup.cs >>> app.UseStatusCodePagesWithReExecute("/Home/StatusCode", "?code={0}");
if (code.HasValue)
{
// here is the trick
this.HttpContext.Response.StatusCode = code.Value;
}
//return a static file.
try
{
return File("~/" + code + ".html", "text/html");
}
catch (FileNotFoundException)
{
return Redirect("Home/StatusCode?code=404");
}
}
}