2010-06-29 11 views
7

Moja strona internetowa zawiera moduł obsługi (FileDownload.ashx), który zajmuje się wszystkimi żądaniami pobierania plików.ASP.Net 4.0 - Jak uzyskać dostęp do RouteData z poziomu ASHX?

Niedawno przeprowadziłem moją witrynę do ASP.NET 4.0, a obecnie używa ona intensywnego routingu. Wszystko działa poprawnie przy rozpatrywaniu wniosków stron (aspx), ale to nie działa z moim obsługi - I napotkać następujący błąd:

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

Ma to sens, ponieważ routingu jest realizowana tylko na stronie.

Jakie kroki należy podjąć, aby móc korzystać z routingu i mojego konta .ashx? Chcę móc wyodrębnić z trasy RouteData.Values.

public class FileDownload : IHttpHandler 
{ 
} 

Odpowiedz

1

Brzmi jak problem IIS.

Czy to działa, jeśli próbujesz używać serwera programistycznego ASP.NET (Cassini)?

Jeśli korzystasz z IIS6, musisz użyć mapowania aplikacji Wildcard - patrz here.

Musisz nadal trzeba utworzyć swoje trasy jak na dowolnej stronie aspx tak:

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); 
} 

Zrobiłaś to? Jeśli tak, powiedziałbym, że twój problem jest zdecydowanie z IIS.

Zapoznaj się z artykułem here, aby uzyskać dobry artykuł na temat routingu ASP.NET 4 dla usług IIS6 i IIS7.

Powodzenia!

+0

Dzięki za pomoc! –

Powiązane problemy