Với ASPNET 4.0 có sự thay đổi phá vỡ khi sử dụng IIS6 với trang web có "legacy" ASP.NET 2.0 trộn với ứng dụng ASP.NET 4.0.
URL extensionless được gửi đến cấu hình "default content page" chẳng hạn như "default.aspx" thay vào đó sẽ được gửi đến eurl.axd theo sau là một mã băm. Thật không may ứng dụng ASP.NET 2.0 sẽ không tự động xử lý đó.
Microsoft cung cấp 3 cách giải quyết trong ASP.NET V4. Hai trong số đó là để không trộn ASP.NET 2.0 và ứng dụng 4.0 trong cùng trang web. Thứ ba là vô hiệu hóa URL extensionless hoàn toàn.
Nhưng nếu bạn muốn kết hợp ASP.NET 2.0 và ứng dụng 4.0 trong cùng trang web và sử dụng URL extensionless trong ứng dụng 4.0?
Tại sao không chỉ handle eurl.axd path và chuyển hướng nó vào tài liệu default? Cách thực hiện:
1. Tạo ra thư viện lớp (tức là eurlredirect.dll) với lớp IHttpHandler duy nhất.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace eurlredirect
{
public class RedirectHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Redirect("Default.aspx");
}
}
}
2. Thêm lớp thư viện vào thư mục bin ASP.NET 2.0.
3. Cấu hình xử lý trong file web.config ứng dụng ASP.NET 2.0 bằng cách thêm các mục sau đây đến phần <httpHandlers>:
<add verb="*" path="eurl.axd" validate="false" type="eurlredirect.RedirectHandler, eurlredirect"/>