asp.net एएसपी.नेट 4.0-रूटडेटा को एएसएचएक्स के भीतर से कैसे पहुंचा जा सकता है?




routes httphandler (2)

मेरी वेब साइट में एक हैंडलर (फाइल डाऊनलोड। आशएक्स) है जो सभी फाइल डाउनलोड अनुरोधों से संबंधित है।

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

'Handslers.FileDownload' को 'System.Web.UI.Page' से प्राप्त नहीं होता है

यह समझ में आता है, क्योंकि रूटिंग केवल पृष्ठ में लागू होती है।

रूटिंग और मेरी का उपयोग करने में सक्षम होने के लिए मुझे क्या कदम उठाने होंगे। मैं RouteData.Values निकालने में सक्षम होना चाहता हूं। मार्ग से मूल्य।

public class FileDownload : IHttpHandler
{
}

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

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


एक IIS समस्या की तरह लगता है

यदि आप एएसपी.नेट डेवलपमेंट सर्वर (कैसिनी) की कोशिश करते हैं और इसका उपयोग करते हैं तो क्या यह काम करता है?

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

आपको किसी भी एएसपीएक्स पृष्ठ के अनुसार अपने मार्गों को अभी भी बनाने की आवश्यकता होगी, जैसे:

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 दोनों के लिए एएसपी.नेट 4 रूटिंग के अच्छे लेख के लिए यहां देखें।

सौभाग्य!





ashx