2012-04-16 23 views
5

में प्रवेश करने के लिए रुक जाती है, मैं अपने एएसपीएनटी एमवीसी प्रोजेक्ट में एक .aspx (वेबफॉर्म पेज) को रूट करने का प्रयास कर रहा हूं। मैं Global.asax में पेज रजिस्टर:एएसपीनेट एमवीसी प्रोजेक्ट में MapPageRoute जोड़ने के बाद, साइट होम कंट्रोलर

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapPageRoute("Tickets", "Reports/Tickets", "~/WebForms/Reports/Tickets.aspx"); 
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

समस्या है, के बाद मैं दूसरी पंक्ति जोड़ने के लिए, साइट मेरी होम नियंत्रक (सूचकांक लड़ाई) में प्रवेश करने के लिए बंद हो जाता है और के लिए पुनः निर्देशित किया जाता है: कि मैं चलाने हमेशा http://localhost:37538/Reports/Tickets?action=Index&controller=Login%22 परियोजना।

परियोजना विवरण:

  • Asp.Net MVC 3
  • फार्म प्रमाणीकरण
  • नेट 4,0

Obs: इस त्रुटि पुन: पेश करने, बनाने के लिए एक नया asp.net MVC के परियोजना फ़ोल्डर के अंदर Tickets वेबफॉर्म पेज बनाने के बाद, और नया मार्ग पंजीकृत करने के बाद, इंटरनेट ऐप के रूप में। प्रोजेक्ट चलाएं (शायद आप लॉग इन हैं), तो अब लॉगऑफ करें और आपको http://localhost:35874/Reports/Tickets?action=LogOff&controller=Account पर रीडायरेक्ट कर दिया जाएगा, तो क्यों?

उत्तर

10

हल हो गया! इसलिए, हमें यह सुनिश्चित करने के लिए वेबफॉर्म मार्ग पर एक मार्ग प्रतिबंध जोड़ने की आवश्यकता है कि यह केवल आने वाले मार्गों पर पहुंच जाए, न कि आउटगोइंग मार्ग पीढ़ी।

अपनी परियोजना के लिए निम्न वर्ग जोड़ें (या तो एक नया फ़ाइल या global.asax.cs के तल में):

public class MyCustomConstraint : IRouteConstraint{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection){ 
     return routeDirection == RouteDirection.IncomingRequest; 
    } 
} 

तो निम्न के टिकट मार्ग बदलने के लिए:

routes.MapPageRoute(
    "Tickets", 
    "Reports/Tickets", 
    "~/WebForms/Reports/Tickets.aspx", 
    true, null, 
    new RouteValueDictionary { { "outgoing", new MyCustomConstraint() } } 
); 
+0

धन्यवाद! इसने मेरे मुद्दों को हल किया जहां मैपपेज रूट जोड़ने के बाद मैं अपने पृष्ठों में लॉग इन नहीं कर सका। लॉग-पेज पर सबमिट-बटन वास्तव में मूल्यों को पहले पृष्ठ मार्ग पर पोस्ट करता है। क्या आपके पास कोई स्रोत है जो इस व्यवहार और इसके पीछे तर्क का वर्णन करता है? –

+1

यहां कुछ लिंक जो समाधान तक पहुंचने में मेरी सहायता करते हैं: http://dotnet.dzone.com/news/custom-route-constraint-aspnet, http://blogs.imeta.co.uk/MBest/archive/2010/ 01/06.aspx और http://www.eworldui.net/blog/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx –

+0

लेकिन विशेष रूप से आप चाहते हैं, मेरे पास नहीं है। –