2012-04-16 28 views
5

'a girmeyi bırakır. Asp.net mvc projemde bir .aspx (webforms sayfası) yönlendirmeye çalışıyorum. Ben Global.asax içinde sayfa kayıt:Bir asp.net mvc projesine MapPageRoute ekledikten sonra, site Home Denetleyici

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 }); 

sorun i ikinci satırı ekledikten sonra, site benim Ev Kontrolörü (Endeks Eylem) girmek için durur ve yeniden yönlendiriliyor çıkmaktadır: i çalıştırmak her zaman http://localhost:37538/Reports/Tickets?action=Index&controller=Login%22 proje.

Proje Detayları:

  • Asp.Net MVC 3
  • Form Kimlik Doğrulaması
  • .Net 4,0

Obs: Bu hatayı yeniden oluşturmak, yeni bir asp.net mvc proje İnternet uygulaması olarak, /WebForms/Reports klasöründe bulunan Tickets web formları sayfasını oluşturduktan sonra yeni rotayı kaydedin. Projeyi çalıştırın (muhtemelen günlüğe kaydedilir), bu yüzden şimdi çıkış yapınız ve http://localhost:35874/Reports/Tickets?action=LogOff&controller=Account'a yönlendirileceksiniz, neden?

cevap

10

Çözüldü! Dolayısıyla, webformları rotasına bir rota çakışması eklemeliyiz, böylece yalnızca rota yolunda değil, gelen rotalarda yakalandığından emin olun.

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

Ardından şu biletleri rotayı değiştirmek:

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

(yeni bir dosya ya da global.asax.cs dibinde ya) projenize aşağıdaki sınıf ekleyin Teşekkür ederim! Bu, bir MapPageRoute ekledikten sonra sayfalarıma giriş yapamadığım sorunlarımı çözdü. Giriş sayfasındaki gönder düğmesi aslında değerleri ilk sayfa rotasına gönderir. Bu davranışı ve bunun arkasındaki mantığı açıklayan herhangi bir kaynağınız var mı? –

+1

Çözüme ulaşmak için bana yardımcı olan bazı bağlantılar: http://dotnet.dzone.com/news/custom-route-constraint-aspnet, http://blogs.imeta.co.uk/MBest/archive/2010/ 01/06.aspx ve http://www.eworldui.net/blog/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx –

+0

Ancak özellikle istediğiniz gibi, sahip değilim. @ViniciusOttoni kaynaklarınızı eklemek için –

İlgili konular