2011-10-04 46 views
5

Xin chào Tôi đang cố gắng thực hiện chuyển hướng nếu phản hồi là 404 nhưng không hoạt động như mong đợi, các chuyên gia có thể xem sự cố không ?. Nó vẫn đi vào generic 404404 Chuyển hướng Tùy chỉnh

trong Global.asax của tôi

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
     if (Response.Status == "404 Not Found") 
     { 
      string notFound = "~/custom_notfound.aspx"; 
      Response.Redirect(notFound); 
     } 

} 

CẬP NHẬT

Cố gắng cho đến nay

(Response.Status == "404 Not Found") 
(Response.Status == "404") 
(Response.StatusCode == 404) 
+0

Ý của bạn là để đưa 'Response.Redirect (notfound); '? – Icarus

+0

PageNotFound là gì ?? –

+0

ahh xin lỗi lỗi đánh máy khi đăng nhưng vẫn gặp sự cố. Cảm ơn bạn – user710502

Trả lời

8

Bạn cũng có thể sử dụng web.config customErrors phần - as shown here

ví dụ Trong phần system.web,

<customErrors mode="On" defaultRedirect="/custom_error.aspx"> 
    <error statusCode="404" redirect="/custom_notfound.aspx" /> 
</customErrors> 
2

Bạn có thể thêm vào web.config để thực hiện chuyển hướng này, bạn không cần sử dụng Application_BeginRequest để xử lý việc này.

Xem điều này ServerFault question.

Nếu bạn không thể sử dụng web.config thì tôi sẽ đặt trang khởi động của bạn thành trang không tồn tại, đặt điểm ngắt trong BeginRequest, gỡ lỗi ứng dụng và xem yêu cầu để xem cách xác định là một 404. Điều đó sẽ dễ dàng hơn nhiều để xác định giải pháp tối ưu.

Nhìn vào điều này một số chi tiết, có một HttpStatusCode được sử dụng trong lớp HttpWebResponse. Vì vậy, nó có thể có ý nghĩa để sử dụng một ghi đè khác nhau của ứng dụng để có được phản ứng mặc định, và sau đó kiểm tra tình trạng của nó chống lại Enum.

+0

Trong mọi trường hợp, vì một số lý do họ muốn nó được thực hiện trong asax, đó sẽ là cách để làm điều đó ở đó? – user710502

3

Tôi không nghĩ BeginRequest có thể biết về lỗi 404. Thay vào đó, hãy thử triển khai Application_Error. Kiểm tra xem Server.GetLastError() có phải là một HttpException không và nếu có, hãy kiểm tra trạng thái.

0

Bạn cũng có thể sử dụng web.config

<system.webServer> 
    <httpErrors errorMode="Custom" defaultResponseMode="File" > 
    <remove statusCode="404" /> 
    <remove statusCode="500" /> 
    <error statusCode="404" path="404.html" /> 
    <error statusCode="500" path="500.html" /> 
    </httpErrors> 
</system.webServer> 
Các vấn đề liên quan