2010-08-26 2 views
1

J'ai 1 site Web sur IIS ("myWebsite") et un autre à l'intérieur de celui-ci ("secondWebsite") comme une application. Les deux sont des sites Web ASP.NET Mvc.ASP.NET url absolue MVC avec une application dans un site Web

J'ai une méthode qui fonctionne parfaitement sur le premier:

public static string AbsolutePath(this UrlHelper url, string path) 
    { 
     Uri requestUrl = url.RequestContext.HttpContext.Request.Url; 
     string absoluteAction = string.Format("{0}{1}", requestUrl.GetLeftPart(UriPartial.Authority), path); 
     return absoluteAction; 
    } 

Le résultat est le suivant: http://myWebsite.com/path

J'ai la même méthode dans le second site Web, le résultat est le même, c'est logique mais je ne le veux pas!

Le résultat devrait être: myWebsite.com/secondWebsite/path. (Manque le http: // cause de la prévention du spam ^^).

Existe-t-il un bon moyen de le faire?

Merci.

Répondre

1

Vous pouvez essayer d'utiliser

string absoluteAction = string.Concat(Request.Url.Authority, 
    Request.ApplicationPath, path); 
0

Ne pouvez-vous pas utiliser Server.ResolveUrl ("~/Path"); car cela rebase de la racine de l'application.

+0

Je ne savais pas qu'un. Fonctionne pour une vue, mais je veux l'utiliser pour les fichiers CSS:/ <%: ResolveUrl ("Content/styles_1.css")%> donnez-moi Views/Shared/Content/styles_1.css ^^. Et il ne me donne pas l'url absolue:/ – Tom741

+0

Dans une vue, l'utilisation de <% = ResolveUrl ("~/styles/main.css")%> fera référence au dossier des styles dans l'application en question et non à la racine du serveur. Si vous essayez simplement de référencer des fichiers CSS et des fichiers js à partir de votre vue, cela devrait être tout ce que vous devez faire - il a été essayé et testé pour fonctionner avec des sites qui sont soit à la racine du site Web IIS, soit imbriqués dans des applications. répertoires virtuels. Si ce n'est pas ce que vous faites, pouvez-vous donner plus de contexte au problème que vous essayez de résoudre? Merci. –

Questions connexes