2010-06-29 32 views
7

Trang web của tôi có trình xử lý (FileDownload.ashx) đề cập đến tất cả các yêu cầu tải xuống tệp.ASP.Net 4.0 - Cách truy cập RouteData từ bên trong ASHX?

Gần đây tôi đã di chuyển trang web của mình sang ASP.NET 4.0 và giờ đây nó sử dụng định tuyến rộng rãi. Tất cả mọi thứ hoạt động tốt khi đối phó với yêu cầu trang (aspx), nhưng nó không làm việc với xử lý của tôi - tôi gặp phải lỗi sau:

Type '.Handlers.FileDownload' does not inherit from 'System.Web.UI.Page'.

này có ý nghĩa, như định tuyến chỉ được thực hiện trong trang.

Tôi cần thực hiện các bước nào để có thể sử dụng định tuyến và .ashx cùng nhau? Tôi muốn có thể trích xuất RouteData.Values từ tuyến đường.

public class FileDownload : IHttpHandler 
{ 
} 

Trả lời

1

Nghe giống như sự cố IIS.

Tính năng này có hoạt động nếu bạn thử và sử dụng ASP.NET Development Server (Cassini) không?

Nếu bạn đang sử dụng IIS6, bạn sẽ cần phải sử dụng Ánh xạ ứng dụng ký tự đại diện - xem here.

Bạn cũng sẽ vẫn cần phải tạo ra các tuyến đường của bạn theo bất kỳ trang ASPX, như thế này:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    string[] allowedMethods = { "GET", "POST" }; 
    HttpMethodConstraint methodConstraints = new HttpMethodConstraint(allowedMethods); 

    Route fileDownloadRoute = new Route("{foo}/{bar}", new FileDownload()); 
    fileDownloadRoute.Constraints = new RouteValueDictionary { { "httpMethod", methodConstraints } }; 

    routes.Add(fileDownloadRoute); 
} 

Bạn đã làm được điều đó? Nếu vậy, tôi muốn nói vấn đề của bạn là dứt khoát với IIS.

Xem here để có bài viết tốt về Định tuyến ASP.NET 4 cho cả IIS6 và IIS7.

Chúc may mắn!

+0

Cảm ơn sự giúp đỡ của bạn! –

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