2010-11-30 16 views
12

से एक चरित्र के साथ टोकन के बीच शाब्दिक उप-सेगमेंट, और रूट मान, क्योंकि मैं पूछ रहा हूं क्योंकि आईआईएस कुछ एएसपी.NET फ़ोल्डरों की रक्षा करता है, जैसे बिन, ऐप_Data, App_Code, इत्यादि। यदि यूआरएल किसी वास्तविक फाइल सिस्टम फ़ोल्डर में मैप नहीं करता है, तो भी आईआईएस एक यूआरएल को निर्दिष्ट खंडों में से एक के बराबर पथ खंड के साथ अस्वीकार करता है।एएसपी.नेट रूटिंग: शाब्दिक उप-सेगमेंट

इसका मतलब यह है कि मैं इस तरह एक मार्ग नहीं हो सकता: जहां आईडी जैसे किसी भी स्ट्रिंग हो सकती है

{controller}/{action}/{id} 

...

Catalog/Product/Bin 

तो, बजाय इस सुरक्षा उपाय को अक्षम करने का मैं मार्ग बदलने के लिए, आईडी से पहले एक प्रत्यय का उपयोग कर तैयार हूँ, इस तरह:

{controller}/{action}_{id} // e.g. Catalog/Product_Bin 
{controller}/{action}/_{id} // e.g. Catalog/Product/_Bin 

लेकिन इन मार्गों अगर काम नहीं करेगा आईडी में नया डिलीमीटर होता है, _ इस मामले में, उदाहरण के लिए

// These URL won't work (I get 404 response) 
Catalog/Product_Bin_ 
Catalog/Product/_Bin_ 
Catalog/Product/__Bin 

क्यों? मुझे नहीं पता, मेरे लिए एक बग की तरह दिखता है। मैं इन मार्गों को कैसे काम कर सकता हूं, जहां आईडी कोई स्ट्रिंग हो सकती है? *,,:

+0

क्या यह कुछ है जो आप [UrlRewite] (http://www.iis.net/download/URLRewrite) के साथ पूरा कर सकते हैं? – R0MANARMY

+0

दिलचस्प है, कैटलॉग/उत्पाद/_bin_ मेरे लिए काम किया, लेकिन कैटलॉग/उत्पाद/__ बिन काम नहीं किया। मैं डेवलपर से यह पता लगाने के लिए जांच कर रहा हूं कि ऐसा क्यों है। मुझे लगता है कि यह भी काम करना चाहिए। – Haacked

+0

क्या यह संभव है कि यह **/0 {id} ** जैसे कुछ करने पर भी होता है ** मुझे अभी यह समस्या है और यह कुछ आईडी के साथ 404 लगता है, लेकिन दूसरों के लिए नहीं ... –

उत्तर

7

ठीक है, मेरे पास एक निश्चित उत्तर है। हाँ, यह एक बग है। हालांकि, इस बिंदु पर मुझे यह कहना पछतावा है कि हम इसे दो कारणों से ठीक करने की कोई योजना नहीं है:

  • यह एक तोड़ने वाला परिवर्तन है और नोटिस करना बहुत कठिन हो सकता है उस पर ne
  • एक आसान कामकाज है।

    {controller}/{action}/_{id} 
    

    फिर एक मार्ग बाधा है कि आवश्यकता है कि आईडी पैरामीटर अंडरस्कोर वर्ण के साथ शुरू होता जोड़ें:

आप क्या कर सकते URL बदल अंडरस्कोर नहीं है।

फिर अपनी क्रिया विधि के भीतर आप आईडी पैरामीटर से अंडरस्कोर उपसर्ग को ट्रिम कर देते हैं। यदि आपको पसंद आया तो आप यह करने के लिए एक एक्शन फ़िल्टर भी लिख सकते हैं। असुविधा के लिए खेद है।

+0

के साथ मैं बस इस बग में भी भाग गया, ऐसा लगता है। मार्ग केवल तभी मेल नहीं खाता जब मेरी आईडी का * पहला * अक्षर शाब्दिक उपसर्ग जैसा ही था। http://stackoverflow.com/questions/8711829/why-wont-this-route-match –

0

आप अक्षर हैं जो एक निर्देशिका या फ़ाइल नाम के लिए तरह की अनुमति नहीं है का उपयोग कर सकते हैं। ", <,>, | ASP.NET MVC के साथ

0

यदि आप स्रोत को देखो वे पथ विभाजक (/) के लिए एक हार्ड-कोडेड मान है और मेरे ज्ञान को बदला नहीं जा सकता है।

संबंधित मुद्दे