나는이 문제를 극복 할 수있었습니다. 먼저 웹에서 오류 404에 대한 리디렉션을 해제했습니다.구성은 :
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/error/server-error.aspx">
<!-- <error statusCode="404" redirect="/error/resource-not-found.aspx"/> -->
</customErrors>
</system.web>
그런 다음 내에서 Global.asax에 다음함으로써 Application_Error 이벤트 처리기를 추가 :
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim serverError As HttpException = DirectCast(Server.GetLastError(), HttpException)
If Not serverError Is Nothing Then
If 404 = serverError.GetHttpCode() Then
Server.ClearError()
Server.Transfer("/error/resource-not-found.aspx")
End If
End If
End Sub
마지막으로, 내 오류 404 페이지에 아래 라인을 추가 (발견 된 자원 없습니다. aspx) :
Sub Page_Load()
' If you're running under IIS 7 in Integrated mode set,
' use this line to override IIS errors:
Response.TrySkipIisCustomErrors = True
Response.StatusCode = 404
Response.StatusDescription = "Page not found"
End Sub
FYI : MasterPage 기술을 사용하는 경우 MasterPage의 변수 부분 만 리디렉션됩니다. 웹 사이트의 다양한 섹션에서 존재하지 않는 리소스로 재생 한 후, 나는이 행동이 우리의 최종 사용자에게 영리하고 유용하다는 것을 알게되었습니다.
하나 더. 비 ASPX 자원에 대한 HTTP 404 상태 코드를 반환하려면, 내 Web.config의에서 다음과 같은 설정을 사용 :
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="Redirect">
<remove statusCode="404"/>
<error statusCode="404" path="/error/resource-not-found.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
에주의를 오류 404
I에 대한 'ExecuteURL'로 설정 responseMode에 이것을 Page_Load에 추가하면 404 페이지로 순환 무한 리디렉션됩니다. – TecMan