[C#] Perché MapPageRoute / RedirectToRoute funziona sulla macchina di sviluppo ma non sul server di produzione?


Answers

Question

Ho un progetto di webforms regolare (non MVC) e ho implementato con successo uno scenario MapPageRoute e RedirectToRoute. L'instradamento della pagina viene effettuato mediante ricerche nel database perché sto traducendo stringhe di query (ad esempio, filter = 112 to / my-friendly-url). Funziona bene con la mia macchina di sviluppo che esegue VWD 2010 Express e il server di sviluppo ASP.NET incluso. La versione di ASP.NET è 4.0.30319.272. Tuttavia, quando eseguo il progetto nella casella di produzione (iis7), ottengo errori di pagina non trovati sulle pagine mappate. Il resto del sito / pagine funziona bene. Il mio istinto è che la gestione della pagina è la radice del problema, ma non riesco a capire cosa sia o perché. Potrebbe avere a che fare con il modo in cui iis7 gestisce una directory rispetto a un nome file e l'interferenza che potrebbe derivare dal mio programma di routing dei file .aspx fisici ai nomi di directory. La mia conoscenza di iis7 e web.config è un po 'debole in quest'area.

Ecco un estratto del mio global.asax:

   void Application_Start(object sender, EventArgs e)
   {
      // Code that runs on application startup
      RegisterRoutes(RouteTable.Routes);
   }

   public static void RegisterRoutes(RouteCollection routes)
   {
      routes.Clear();
      routes.RouteExistingFiles = false;
      routes.Ignore("{resource}.axd/{*pathInfo}"); //ignore axd files, prevents javascript/routing collisions
      routes.MapPageRoute("Education", "{category}/{section}", "~/product/education/default.aspx");
      routes.MapPageRoute("EducationLanding", "{category}", "~/product/education/default.aspx");
   }

Web.config: sezione Gestori di

 <handlers>
     <remove name="StaticFile" />
     <remove name="PageHandlerFactory-Integrated-4.0" />
     <add verb="*" path="ajax/*.ashx" name="Ajax" type="Ajax.PageHandlerFactory, Ajax" />
     <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
     <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
     <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />  
  </handlers>

Grazie in anticipo, John