2010-08-19 17 views
12

नहीं मिला मैंने निम्नलिखित मार्ग का उपयोग करके एएसपी.NET 4.0 में यूआरएल रूटिंग लागू की है।एएसपी.नेट 4.0 यूआरएल रूटिंग HTTP त्रुटि 404.0 -

routes.MapPageRoute(
    "NewsDetails",    // Route name 
    "news/{i}/{*n}", // Route URL 
    "~/newsdetails.aspx"  // Web page to handle route 
    ); 

जो मेरे जैसे

http://www.mysie.com/news/1/this-is-test-news 

और इस यूआरएल देता है मेरी स्थानीय होस्ट ठीक में काम कर रहा है।

लेकिन जब मैं सर्वर पर इसे अपलोड यह देता है ...

Server Error 

404 - File or directory not found. 
The resource you are looking for might have been removed, had its name changed, 
or is temporarily unavailable. 

अगर मैं http://www.mysie.com/news/1/this-is-test-news.aspx कोशिश तो यह पेज प्रदर्शित करता है।

क्या किसी को भी कोई समस्या है?

मैं विंडोज सर्वर 2008 पर काम करने के लिए URL http://www.mysie.com/news/1/this-is-test-news कैसे सेट कर सकता हूं?

+0

क्या एएसपीएक्स पेज की तरह ही निर्देशिका में रूट के साथ फ़ाइल है? – XstreamINsanity

+0

संख्या। मेरी एएसपीएक्स फाइल रूट फ़ोल्डर –

उत्तर

33

आईआईएस 7.5 के साथ डिफ़ॉल्ट ASP.Net 4.0 रूटिंग सक्षम करने के लिए:

  1. सुनिश्चित करें कि आप HTTP पुनर्निर्देशन सुविधा यह किया जा सकता है स्थापित किया है सुनिश्चित करें -> नियंत्रण कक्ष -> progams -> बंद करें खिड़कियां हैं -> विश्व वाइड वेब सेवाएं -> आम HTTP विशेषताएं -> HTTP पुनर्निर्देशन
  2. नीचे कोड के साथ अपने web.config संशोधित

 

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true">  
     <remove name="UrlRoutingModule"/> 
     <add name="UrlRoutingModule" 
      type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </modules> 
    <handlers> 
     <add name="UrlRoutingHandler" 
      preCondition="integratedMode" 
      verb="*" 
      path="UrlRouting.axd" 
      type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </handlers> 
</system.webServer> 

3. अपने global.asax फ़ाइल में मार्गों बनाएं

ध्यान दें: आप Asp.net 4.0 अनुप्रयोग पूल के लिए आवेदन पूल सेट करने के लिए, मार्ग Asp के साथ काम नहीं कर रहा है के रूप में। नेट 4.0 क्लासिक एप्लिकेशन पूल।

आशा है कि इससे मदद मिलेगी।

+0

पर हैं क्या यह वास्तव में 'UrlRoutingHandler 2.0.0.0' कहने वाला है? यह 4.0 क्यों नहीं होगा? – Maslow

+0

यह मेरे लिए काम करता था, लेकिन मुझे UrlRoutingHandler नोड जोड़ने की आवश्यकता नहीं थी। – Mike

+0

बहुत बढ़िया .. आकर्षण की तरह काम किया :) –

1

मैं अपने सभी व्यंजनों लेकिन अपने वेब साइट (ASP.NET 4.0 + VS2010 + कैसिनी) अभी भी नहीं सही ढंग से मार्ग था पढ़ा है।

मेरी साइट के लिए वर्चुअल पथ "CompanyName.AplicationName.Web" था। मैंने इस वर्चुअल को "MyAplicationName" और voila में बदल दिया!

बदलें कैसिनी वर्चुअल पथ विन्यास:

  • कैसिनी वर्चुअल पथ -> Ctrl + W, पी या;
  • वेब साइट और "गुण विंडो" पर राइट क्लिक करें।
+0

मुझे खुशी है कि मुझे यह जवाब मिला! मैं एक वर्चुअल पथ का उपयोग कर रहा था जिसमें "अवधि" थी। इस में। "Mysite.com" से "mysite" तक अपना वर्चुअल पथ बदलने के बाद, मेरे सभी कस्टम रूटिंग काम करते थे। –

1

मेरे समाधान, सब कुछ कोशिश कर के बाद:

बुरा तैनाती, एक पुराने PrecompiledApp.config मेरी तैनाती स्थल के चारों ओर लटक रहा था, और बनाने के लिए सब कुछ काम नहीं। जो काम

मेरे अंतिम सेटिंग्स:

  • IIS 7.5, Win2k8r2 64,
  • एकीकृत मोड अनुप्रयोग पूल
  • कुछ भी नहीं web.config में आने वाले बदलाव - इसका मतलब मार्ग के लिए कोई विशेष संचालकों । अनुभागों का मेरा स्नैपशॉट यहां कई अन्य पोस्ट संदर्भ है। मैं FluorineFX उपयोग कर रहा हूँ, इसलिए मुझे लगता है कि हैंडलर जोड़ा है, लेकिन मैं किसी भी अन्य जरूरत नहीं थी:

    <system.web> 
        <compilation debug="true" targetFramework="4.0" /> 
        <authentication mode="None"/> 
    
        <pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
        <httpRuntime requestPathInvalidCharacters=""/> 
    
        <httpModules> 
        <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx"/> 
        </httpModules> 
    </system.web> 
        <system.webServer> 
        <!-- Modules for IIS 7.0 Integrated mode --> 
        <modules> 
         <add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx" /> 
        </modules> 
    
        <!-- Disable detection of IIS 6.0/Classic mode ASP.NET configuration --> 
        <validation validateIntegratedModeConfiguration="false" /> 
        </system.webServer> 
    
  • Global.ashx: (केवल किसी भी टिप्पणी की विधि)

    void Application_Start(object sender, EventArgs e) { 
        // Register routes... 
        System.Web.Routing.Route echoRoute = new System.Web.Routing.Route(
          "{*message}", 
         //the default value for the message 
          new System.Web.Routing.RouteValueDictionary() { { "message", "" } }, 
         //any regular expression restrictions (i.e. @"[^\d].{4,}" means "does not start with number, at least 4 chars 
          new System.Web.Routing.RouteValueDictionary() { { "message", @"[^\d].{4,}" } }, 
          new TestRoute.Handlers.PassthroughRouteHandler() 
         ); 
    
        System.Web.Routing.RouteTable.Routes.Add(echoRoute); 
    } 
    
  • PassthroughRouteHandler

    public class PassthroughRouteHandler : IRouteHandler { 
    
        public IHttpHandler GetHttpHandler(RequestContext requestContext) { 
         HttpContext.Current.Items["IncomingMessage"] = requestContext.RouteData.Values["message"]; 
         requestContext.HttpContext.Response.Redirect("#" + HttpContext.Current.Items["IncomingMessage"], true); 
         return null; 
        } 
    } 
    
: - .cs इस http://andrew.arace.info/#stackoverflow करने के लिए http://andrew.arace.info/stackoverflow से एक स्वचालित बातचीत जो तब default.aspx द्वारा नियंत्रित किया जाएगा हासिल की
संबंधित मुद्दे