2010-06-29 9 views
7

मेरी वेबसाइट में एक हैंडलर (FileDownload.ashx) है जो सभी फ़ाइल डाउनलोड अनुरोधों से संबंधित है।एएसपी.Net 4.0 - एएसएचएक्स के भीतर से रूटडेटा तक कैसे पहुंचे?

मैं हाल ही में ASP.NET 4.0 के लिए अपनी साइट माइग्रेट किए गए है और अब यह बड़े पैमाने पर मार्ग का उपयोग करता है। सब कुछ ठीक काम करता है जब पेज अनुरोध (aspx) के साथ काम कर, लेकिन यह मेरी हैंडलर के साथ काम नहीं कर रहा है - मैं निम्नलिखित त्रुटि का सामना करना:

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

यह समझ में आता है, के रूप में मार्ग ही पेज में कार्यान्वित किया जाता।

क्या कदम मैं एक साथ मार्ग और मेरे .ashx उपयोग करने के लिए सक्षम होने के लिए ले जाने की जरूरत है? मैं मार्ग से RouteData.Values निकालने में सक्षम होना चाहता हूं।

public class FileDownload : IHttpHandler 
{ 
} 

उत्तर

3

मैं अंत में एक हैंडलर शिल्प हाथ करने के लिए आवश्यक है, लेकिन यह बहुत आसान था: http://haacked.com/archive/2009/11/04/routehandler-for-http-handlers.aspx

नेट 4.0 देशी रूप IHttpHandlers के लिए से निपटने के मार्ग का समर्थन नहीं करता।

1

आईआईएस समस्या की तरह लगता है।

तुम कोशिश करता है यह काम करता है, तो और ASP.NET विकास सर्वर (कैसिनी) का उपयोग करें?

आप IIS6 उपयोग कर रहे हैं आप वाइल्डकार्ड अनुप्रयोग मैपिंग का उपयोग करना होगा - here देखते हैं।

ही आप अभी भी इस तरह, प्रति किसी भी ASPX पेज के रूप में अपने रूट बनाने के लिए की आवश्यकता होगी:

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

आपको लगता है कि किया है? यदि ऐसा है, तो मैं कहूंगा कि आपकी समस्या आईआईएस के साथ निश्चित रूप से है।

दोनों IIS6 और IIS7 के लिए ASP.NET 4 रूटिंग पर एक अच्छा लेख के लिए here देखें।

शुभकामनाएं!

+0

आपकी मदद के लिए धन्यवाद! –