web-dev-qa-db-fra.com

Que fait vraiment remplacer l'URL racine de l'application?

Le seul endroit sur Internet où j'ai pu trouver une explication est sur MSDN :

Spécifie un autre chemin pour l'URL racine de l'application. Utilisez cette option si la racine de l'application Web n'est pas la racine de votre projet.

De ici J'ai compris que "racine d'application" est le chemin qui récupère lors de l'utilisation de tilde dans ASP.NET. Donc, je m'attendrais à ce que si je vais dans les propriétés du projet - Web - "Remplacer la racine de l'application" et que je spécifie une autre URL, le tilde mapperait vers cette URL.

Mais ce n'est pas le cas. Par exemple, mon site Web se trouve sur un répertoire virtuel - http://localhost/WebApplication1 et sur "Remplacer la racine de l'application" j'essaye de spécifier http://localhost/WebApplication2 ou http://localhost ou http://WebApplication2 (qui existent tous sur mon IIS local). Maintenant, quand j'écris

Response.Redirect("~/test2/login");

Je m'attends à ce qu'il me redirige vers http://localhost/WebApplication2/test2/login. Mais au lieu de cela, il me redirige vers http://localhost/WebApplication1/test2/login comme si je n'avais pas remplacé la "racine de l'application".

Alors, qu'est-ce que cette fonctionnalité suppose vraiment de faire? Ou peut-être que cela ne fonctionne pas parce que je manque quelque chose et que je ne l'ai pas défini correctement?

18
BornToCode

Remplacer l'URL de la racine de l'application ne change pas l'emplacement de la racine de l'application dans votre application. Il modifie l'URL utilisée pour atteindre la racine de l'application. Parce que IIS effectue une vérification du nom d'hôte, il est utilisé pour spécifier si vous souhaitez accéder à votre application par un moyen autre que localhost:[PORT].

Par exemple, si vous le remplacez par www.myapp.com vous pouvez ensuite accéder à votre application en l'ajoutant à votre fichier hosts:

127.0.0.1     www.myapp.com

Cela peut être particulièrement utile si vous rendez votre application disponible sur un appareil distant (une machine virtuelle sur votre ordinateur ou un appareil mobile sur votre réseau) car ils ne pourraient pas naviguer vers localhost comme application adresse.

12
IronSean