2012-04-27 14 views
5

मैं शायद ASP.NET से बहुत ज्यादा उम्मीद है, लेकिन अपाचे में यह URL पुनः लिखने के तुच्छ है, तो कुछ इस तरह का अनुरोध: http://mysite/myfolder/mypage/niceurlparameter वास्तव में स्थैतिक पृष्ठ की सेवा के लिए http://mysite/mypage.htmlइस ग्लोबल.एक्सएक्स रूटिंग सेटिंग में क्या गलत है?

मैं कैसे हैं कि Global.asax में प्रबंधन करता है?

मैं इस की कोशिश की है:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html"); 

लेकिन यह 404 लौटाने जब मैं अनुरोध करता http://mysite/myfolder/mypage/niceurlparameter रहता है।

बहरहाल, यह काम करता है:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html"); 

तो मैं mypage.html मिलता है जब http://mysite/myfolder/mypage.html/niceurlparameter का अनुरोध।

मैं बस अपने यूआरएल में ".html" भाग से छुटकारा पाना चाहता हूं। मैं क्या खो रहा हूँ?

अद्यतन: किसी कारण से, पूर्व के मामले में '*' वाइल्डकार्ड स्वीकार नहीं किया गया है।

बदलने के लिए:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html"); 

मार्ग पृष्ठ HTML करने के लिए अनुरोध करने के लिए प्रकट होता है, लेकिन फिर मैं त्रुटि मिलती है:

There is no build provider registered for the extension '.html'. 

क्यों दुनिया में यह सिर्फ पूर्व के मामले में काम करेगा (यूआरएल में एचटीएमएल के साथ), और जब एचटीएमएल छोड़ दिया जाता है?

+0

आईआईएस का कौन सा संस्करण आप चल रहे हैं? मुझे याद है कि आईआईएस 6 बॉक्स के बाहर इसकी अनुमति नहीं देगा, आपको वाइल्डकार्ड मैपिंग जोड़ने की जरूरत है। –

+1

संभावित समाधान के लिए यह प्रश्न देखें: http://stackoverflow.com/q/9918066/25727 – Jan

+0

आईआईएस v7.5 है। सुझाए गए लिंक में मदद मिली। धन्यवाद – tishma

उत्तर

3

There is no build provider registered for the extension '.html'

आपको यह त्रुटि प्राप्त होती है क्योंकि स्थिर HTML फ़ाइलों को आईआईएस द्वारा सीधे संभाला जाना चाहिए। हालांकि, आपके मामले में एएसपी.नेट एमवीसी ढांचा .html की फ़ाइल को संभालने का प्रयास कर रहा है, जो यह नहीं कर सकता है।

तो यदि आपको लगता है कि आपको ऐसा करने की ज़रूरत है तो आपको एक नया प्रदाता बनाना होगा और web.config फ़ाइल में पंजीकरण करना होगा। इस

Custom file extensions for ASP.NET - help needed!

को देखो आप बस फ़ाइलों .aspx करने के लिए अपने स्थिर html सामग्री बदल सकता है। एक साधारण प्रतिलिपि और पेस्ट नौकरी करेगा और इसे ठीक काम करना चाहिए। यह फ़ाइल प्रकार को संभालने के बारे में जानेंगे।

+1

मैं इसे स्वीकार कर रहा हूं, क्योंकि यह वास्तव में इस मुद्दे को हल करता है। हालांकि, मैं कभी भी कुछ कस्टम लिखूंगा जो अंततः एक वेब सर्वर को स्थैतिक फाइलों (!?!) यूआरएल पुनर्लेखन के लिए एक बेहतर तरीका है अगर आप स्थैतिक फ़ाइल पुनर्निर्देशन चाहते हैं तो ले लो IIS 7.5 और यूआरएल दो मॉड्यूल को फिर से लिखने का तरीका है। – tishma

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