2010-01-02 3 views
0

J'utilise Context.RewritePath dans Application_BeginRequest pour rendre mon URL conviviale, tout fonctionne correctement sur ma machine locale mais sur le serveur (partagé) j'obtiens des erreurs 404. avez-vous une idée de comment puis-je résoudre ce problème?Url Réécriture ne fonctionne pas sur le serveur

merci

Répondre

0

Quelle version d'IIS exécutez-vous? 6? Dans la mesure où je sais que l'URL que vous souhaitez mapper, doit exister physiquement pour que cela fonctionne.

Exemple:? /Page/Television/default.aspx devrait être calqué/la page id = 5

Vous devez créer le dossier page/Televsion et default.aspx dans votre solution. Le default.aspx ne doit pas contenir plus de "<% Page%>

0

Sous Cassini, Application_BeginRequest exécute tous les fichiers. Sous IIS, il ne fonctionne que pour les fichiers avec les gestionnaires gérés, tels que les fichiers * .aspx.

pour le cas général, vous devrez créer votre propre HttpModule Voici un exemple (basé hors d'un semblable de mon livre: Ultra-Fast ASP.NET):.

using System; 
using System.Web; 

namespace Samples 
{ 
    public class RewriteExample : IHttpModule 
    { 
     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += OnBeginRequest; 
     } 

     void OnBeginRequest(object sender, EventArgs e) 
     { 
      HttpApplication application = (HttpApplication)source; 
      HttpContext context = application.Context; 
      // re-write URL here... 
     } 

     public void Dispose() 
     { 
     } 
    } 
} 

Alors inscrivez-vous dans web.config (ce qui est pour IIS, l'utilisation de Cassini est légèrement différente):

<system.webServer> 
    <modules> 
    . . . 
    <add name="RewriteExample" type="Samples.RewriteExample" /> 
    </modules> 
</system.webServer> 
+0

Comment créer un HttpModule? Pourriez-vous donner un exemple s'il vous plaît? merci – user220994

+0

Exemple ajouté ... – RickNZ

Questions connexes