2008-11-26 6 views
2

Dans asp.net 3.5, je suis réécrire l'urlPourquoi l'URL ne réécrit-elle pas le travail?

http://www.abc.com/archive/1108/harpersdecember

à ce qui suit

http://www.abc.com/article.aspx?docId=78

J'utilise ce code pour le faire:

   Context.RewritePath("/article.aspx?docId=78"); 

Cela fonctionne bien localement, mais quand je télécharge sur le serveur web distant, je reçois un 404 tryi ng pour référencer la page ci-dessus. Des suggestions pour lesquelles cela fonctionne localement mais pas à distance?

+0

Pourriez-vous mentionner la version d'IIS (localement et à distance) et le mode dans lequel il fonctionne, si c'est IIS7 (intégré ou classique)? –

Répondre

2

Vous devrez peut-être créer un mappage générique dans IIS sur le serveur distant afin que toutes les demandes soient traitées par ASP.Net. Si vous ne le faites pas, les URL sans .ASPX à la fin ne fonctionneront pas dans votre code de réécriture d'URL.

Il existe une bonne explication de ceci (et d'autres raisons pour lesquelles vous pourriez l'utiliser) sur Scott Guthrie's blog.

1

Non "peut" - vous devez absolument créer un mappage générique. Visual Studio utilise le serveur web cassini qui transmet essentiellement toutes les requêtes via .net. IIS transmet uniquement les requêtes mappées spécifiques (par défaut .aspx, .asmx, etc.) à .net - la réécriture d'une URL dans asp.net nécessite l'ajout d'un nouveau mappage pour obtenir la requête à asp.net en premier lieu

0

Cela me semble que le serveur de production n'a pas de page aspx par défaut, c'est-à-dire: default.aspx. Si c'est le cas, il redirige la demande vers votre gestionnaire.

Un moyen facile de vérifier cela, serait de créer un répertoire et de placer un fichier default.aspx dedans et essayer de le demander en utilisant seulement le nom de dir, à savoir: server.com/newdir/ Si cela vous donne un 404, alors vous le savez à coup sûr.

Questions connexes