일부 데이터를 검색하는 데 사용되는 문자열을 취하는 작업이 있습니다. 이 문자열로 인해 데이터가 반환되지 않으면 (아마 삭제 되었기 때문에) 404를 반환하고 오류 페이지를 표시하고 싶습니다.
나는 현재 항목을 찾을 수 없다는이 작업에 대한 친절한 오류 메시지를 표시하는 특수보기를 반환합니다. 이것은 잘 작동하지만 이상적으로는 404 상태 코드를 반환하여 검색 엔진이이 콘텐츠가 더 이상 존재하지 않음을 알고 검색 결과에서 제거 할 수 있도록하는 것이 이상적입니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
Response.StatusCode = 404를 설정하는 것만 큼 간단합니까?
답변
여러 가지 방법이 있습니다.
- 당신은 일반적인 aspx 코드에 맞습니다. 지정된 방식으로 할당 할 수 있습니다
throw new HttpException(404, "Some description");
답변
ASP.NET MVC 3 이상 에서는 컨트롤러에서 HttpNotFoundResult 를 반환 할 수 있습니다 .
return new HttpNotFoundResult("optional description");
답변
MVC 4 이상에서는 내장 HttpNotFound
헬퍼 메소드를 사용할 수 있습니다 .
if (notWhatIExpected)
{
return HttpNotFound();
}
또는
if (notWhatIExpected)
{
return HttpNotFound("I did not find message goes here");
}
답변
코드 :
if (id == null)
{
throw new HttpException(404, "Your error message");//RedirectTo NoFoundPage
}
Web.config
<customErrors mode="On">
<error statusCode="404" redirect="/Home/NotFound" />
</customErrors>
답변
나는 이것을 사용했다 :
Response.StatusCode = 404;
return null;
답변
.NET Core로 작업하는 경우 다음을 수행 할 수 있습니다. return NotFound()
답변
NerdDinner에서 예를 들어. 시도 를
public ActionResult Details(int? id) {
if (id == null) {
return new FileNotFoundResult { Message = "No Dinner found due to invalid dinner id" };
}
...
}