2008-09-30 29 views
9

Tôi đã có trang web ASP.NET 2.0 với trang 404 tùy chỉnh. Khi không tìm thấy nội dung, trang web sẽ phục vụ trang 404 tùy chỉnh có thêm chuỗi truy vấn aspxerrorpath =/mauro.aspx. 404 trang đó được phục vụ với một tình trạng HTTP của 200. Để cố gắng giải quyết này, tôi đã thêmGoogle 404 và .NET Các trang lỗi tùy chỉnh

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.StatusCode = 404; 
    } 

tôi thêm widget Google và có hai vấn đề với nó. Trong Internet Explorer 7 nó không hiển thị nơi cần. Nếu tôi thêm nó vào nội dung, tôi nhận được một "lỗi không xác định" trên dòng char 79 226 hoặc vùng lân cận; nếu tôi thêm nó vào phần đầu, các hộp tìm kiếm sẽ xuất hiện phía trên nội dung. Trong Firefox nó hoạt động tốt.

Vì vậy, vấn đề của tôi là:

  1. Làm thế nào để làm cho widget xuất hiện inline?
  2. Làm thế nào để làm cho các lỗi trang render như 404 với tên gốc và đường dẫn của tập tin là yêu cầu để khi tôi yêu cầu mauro.aspx tôi nhận được nội dung cho trang 404, nhưng với sự URL của mauro.aspx? (Tôi giả định rằng tôi sẽ phải làm một số URL rewriting trong tập tin global.asax begin_request, nhưng muốn này khẳng định trước khi tôi làm bất cứ điều gì ngớ ngẩn.)

Trả lời

1

tôi đã xử lý 404 bằng cách làm này trong tệp global.asax

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    string url = Request.RawUrl; 
    if ((url.Contains(".aspx")) && (!System.IO.File.Exists(Server.MapPath(url)))) 
    { 
     Server.Transfer("/Error/FileNotFound.aspx"); 
    } 
} 

Bây giờ, nếu có ai có thể giúp tôi với tiện ích con của google sẽ tuyệt vời!

+3

này được hiệu suất quan trọng, bạn đang kiểm tra nếu tập tin tồn tại hay không mỗi lần trên mỗi yêu cầu. –

+0

Đúng, tôi có thể lưu trữ kết quả bằng từ điển hoặc tương tự để sử dụng để kiểm tra nhanh hơn ... – Mauro

10

Có một chế độ chuyển hướng mới trong ASP.NET 3.5 SP1 mà bạn hiện có thể sử dụng để nó không chuyển hướng. Nó hiển thị trang lỗi, nhưng giữ URL giống nhau:

"Cũng tốt cho chuyển hướng URL. Nếu bạn đặt redirectMode trên web.config thành" responseRewrite ", bạn có thể tránh chuyển hướng đến trang lỗi tùy chỉnh và thoát URL trong trình duyệt bị ảnh hưởng. "

+0

Cảm ơn nhưng chúng tôi đang sử dụng .Net 2.0 trong trường hợp này, nhưng tôi sẽ giữ thông tin .net 3.5 sp1. – Mauro

+0

Bắn tôi thực sự xin lỗi, tôi phải quên phần 2.0 của bài đăng của bạn vào lúc tôi đọc xong. Lỗi của tôi. – mattlant

+0

Không vấn đề gì, tôi có thể sử dụng điều này làm đối số cho việc sử dụng 3.5 trong tương lai mặc dù :) – Mauro

Các vấn đề liên quan