2008-11-09 9 views
8

मैं आईआईएस 6 पर मेरी बीटा 1 MVC सेट करने की कोशिश कर रहे हैं और इसे सही ढंग से चलाने के लिए नहीं मिल सकता है मेल नहीं खाता।आईआईएस 6 पर ASP.NET MVC - वाइल्डकार्ड मानचित्रण - भेजे अनुरोध किसी भी मार्ग

The incoming request does not match any route. 
.. 
[HttpException (0x80004005): The incoming request does not match any route.] 
    System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +147 
    System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +36 
    System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +4 
    HCD.Intranet.Web.Default.Page_Load(Object sender, EventArgs e) +81 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33 
    System.Web.UI.Control.OnLoad(EventArgs e) +99 
    System.Web.UI.Control.LoadRecursive() +47 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436 

मैं Default.aspx पृष्ठ में आपूर्ति का उपयोग कर रहा: मैं .net ISAPI DLL करने के लिए एक वाइल्डकार्ड मानचित्रण के रूप में अन्य ब्लॉग पोस्ट में सुझाव दिया लेकिन जब मैं वेबसाइट के रूट का उपयोग निम्नलिखित त्रुटि मिलती है जोड़ लिया है एमवीसी टेम्पलेट एप्लिकेशन जो वेबसाइट की जड़ तक पहुंच को फिर से लिखता है।

public partial class Default : Page 
{ 
    public void Page_Load(object sender, System.EventArgs e) 
    { 
     HttpContext.Current.RewritePath(Request.ApplicationPath); 
     IHttpHandler httpHandler = new MvcHttpHandler(); 
     httpHandler.ProcessRequest(HttpContext.Current); 
    } 
} 

अगर मैं कोशिश करते हैं और इस तरह/परियोजना के रूप में, आवेदन के भीतर एक मार्ग का उपयोग, मैं मानक IIS 404 त्रुटि पृष्ठ, नहीं .net त्रुटि पृष्ठ मिलता है।

मैं अपने Web.config httpHandlers अनुभाग में निम्न पंक्ति जोड़कर की कोशिश की:

<add verb="*" path="*" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

यह मैं कोई दूसरी त्रुटि दे दी है - .net 404 त्रुटि पृष्ठ।

मैं अपने Global.asax, जो कुछ नहीं किया के लिए निम्न कहा:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
SimplyRestfulRouteHandler.BuildRoutes(routes); 
routes.MapRoute(
"Default", 
"{controller}/{action}/{id}", 
new { controller = "Home", action = "Index", id = "" } 
); 
:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    if (Context.Request.FilePath.Equals("/")) 
     Context.RewritePath("Default.aspx"); 
} 

मैं निम्नलिखित मार्ग विन्यास का उपयोग कर रहा (शोकहारा मार्ग MvcContrib परियोजना द्वारा आपूर्ति का उपयोग करता है)

कोई भी सुझाव grealy प्राप्त होगा क्योंकि मैंने अभी के समय के लिए सभी विकल्पों को समाप्त कर दिया है।

बहुत धन्यवाद।

उत्तर

8

ठीक है, काम कर समझ में आ गया।

समस्या थी कि मैं पैकेज करने के लिए msbuild स्वचालन का उपयोग कर रहा था फाइलें जिन्हें मुझे तैनात करने की आवश्यकता थी, और मैं global.asax गायब था।

तो ऐसा लगता है कि ग्लोबल.एक्सएक्स साइट पर तैनात नहीं है, तो कोई भी मार्ग हुक अप नहीं हो जाता है। इसका मतलब यह है कि वेबसाइट रूट को सही ढंग से त्रुटि में परिणाम देता है 'आने वाला अनुरोध किसी भी मार्ग से मेल नहीं खाता है।', और कोई अन्य अनुरोध अब आपके नियंत्रक वर्गों से गुजरता नहीं है, इसलिए परिणामस्वरूप 404.

एचटीएच।

+0

बिल्कुल सही - यह मेरी समस्या थी। मैं एनएएनटी/एमएसबिल्ड के माध्यम से निर्माण कर रहा था और इसमें ग्लोबल.एक्सएक्स फ़ाइल शामिल नहीं थी। उस फाइल को रखने से सबकुछ हल हो जाता है। –

+0

हम्म, मुझे एक ही समस्या है, और मैं भी फाइलों को पैकेज करने के लिए बिल्ड स्क्रिप्ट का उपयोग कर रहा हूं, लेकिन मेरी ग्लोबल.एक्सएक्स फ़ाइल निश्चित रूप से वेब रूट फ़ोल्डर में मौजूद है। –

1

दुर्भाग्य से आईआईएस 6 सही हैंडलर जिसका मतलब है कि आप अपने नियंत्रक के नाम पर .mvc प्रत्यय का उपयोग करना होगा, जैसे /{controller}.mvc/{action}

करने के लिए अनुरोध मैप करने के लिए एक फ़ाइल एक्सटेंशन की जरूरत है
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

SimplyRestfulRouteHandler.BuildRoutes(routes); 

routes.MapRoute(
     "Default", 
     "{controller}.mvc/{action}/{id}", 
     new { controller = "Home", action = "Index", id = "" } 
); 

हालांकि, आईआईएस 6 सर्वर पर आपके नियंत्रण के स्तर के आधार पर इसके आसपास के तरीके हैं। अधिक जानकारी के लिए निम्न पृष्ठों का संदर्भ लें

18

यहाँ मैं extensionless यूआरएल आईआईएस 6 और ASP.NET MVC बीटा के साथ काम कर पाने के लिए किया था है 1.

  • एक डिफ़ॉल्ट ASP.NET MVC बीटा परियोजना बनाएँ और यह संकलन।
  • अनुप्रयोग निर्देशिका की ओर इशारा करते एक नया आईआईएस वेबसाइट बनाएँ।
  • वेबसाइट के लिए आईआईएस गुण में, HomeDirectory टैब पर क्लिक करें।
  • "कॉन्फ़िगरेशन ..." बटन पर क्लिक करें। "मैपिंग" टैब में, " नक्शे वाइल्डकार्ड आवेदन" लेबल पाठ बॉक्स में, प्रकार के लिए क्लिक करें "डालें ..."
  • अगला "ग में: \ windows \ माइक्रोसॉफ्ट।शुद्ध \ Framework \ v2.0.50727 \ aspnet_isapi.dll "
  • स्थित बॉक्स को अचयनित लेबल" कि फ़ाइल मौजूद है सत्यापित करें "ठीक क्लिक करें
  • नेविगेट करने के लिए/घर यह काम किया!

आप की जरूरत नहीं होनी चाहिए बिल्कुल web.config बदल जाते हैं। तुम बस अन्यथा ASP.NET उन अनुरोधों मिल कभी नहीं होगा ASP.NET ISAPI dll करने के लिए IIS के सभी अनुरोधों को मैप करने के लिए की जरूरत है।

+0

आपको बहुत धन्यवाद !! – Sekhar

+0

इसे पोस्ट करने के लिए धन्यवाद, विशेष रूप से 'लेबल वाले बॉक्स को अनचेक करें "सत्यापित करें कि फ़ाइल मौजूद है" ठीक क्लिक करें "चरण जिसे मैं भूल गया था। – Inigoesdr