2009-07-28 8 views
3

j'ai changé mon global.asax pour enregistrer des itinéraires comme ceci: Classe publique MvcApplicationHébergement asp.net mvc sur IIS6

Inherits System.Web.HttpApplication 

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection) 

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

     ' MapRoute takes the following parameters, in order: 

     ' (1) Route name 

     ' (2) URL with parameters 

     ' (3) Parameter defaults 

     routes.MapRoute(_ 

      "Default", _ 

      "{controller}.aspx/{action}/{id}", _ 

      New With {.controller = "Home", .action = "Index", .id = ""} _ 

     ) 

     routes.MapRoute(_ 

      "Root", _ 

      "", _ 

      New With {.controller = "Home", .action = "Index", .id = ""} _ 

     ) 

    End Sub 

    Sub Application_Start() 

     RegisterRoutes(RouteTable.Routes) 

    End Sub 

End Class 

tout fonctionne bien, mais le chemin racine (www.mysite.com) ne travail et je reçois une erreur comme: "Le site Web a refusé de montrer cette page Web HTTP 403"

comment puis-je me débarrasser de cela ??

Répondre

3

Si vous ajoutez une page Default.aspx avec le code suivant Page_Load, il fonctionnera:

 public void Page_Load(object sender, System.EventArgs e) 
     { 
      // Change the current path so that the Routing handler can correctly interpret 
      // the request, then restore the original path so that the OutputCache module 
      // can correctly process the response (if caching is enabled). 

      string originalPath = Request.Path; 
      HttpContext.Current.RewritePath(Request.ApplicationPath, false); 
      IHttpHandler httpHandler = new MvcHttpHandler(); 
      httpHandler.ProcessRequest(HttpContext.Current); 
      HttpContext.Current.RewritePath(originalPath, false); 
     } 
3

Bien que la solution par Nebakanerer travaille pour la racine du site, il ne fonctionne pas pour toutes les urls que suggéré sous-dossiers. Donc à la place, je n'ai pas fait pour l'option de fichier Default.aspx mais mappé tous les caractères génériques dans le site Web basé sur IIS6 à aspnet_isapi.dll. Fondamentalement, faire ASP.NET gérer toutes les demandes indépendamment.

Ce blog explique le processus: [http://weblogs.asp.net/scottgu/archive/2007/03/04/tip-trick-integrating-asp-net-security-with-classic-asp-and-non-asp-net-urls.aspx][1]

Questions connexes