Question

Pour le rendre plus simple pour une webapp de partager des fichiers avec une autre application sur un serveur différent, je suis en utilisant une base balise href dans ma page principale. Comme beaucoup de gens ont découvert, ce casse chemins Webform. J'ai une classe adaptateur formulaire de travail, mais ne suis pas sûr de savoir comment obtenir le chemin absolu de l'url. À l'heure actuelle, mon programme est codé en dur d'utiliser quelque chose qui ressemble à:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

Il est intéressant de noter que je teste actuellement sur mon serveur IIS local, donc il y a une tendance étrange pour beaucoup de choses que j'ai essayé d'utiliser pour ce que le chemin absolu ne comprennent pas le nom de domaine (mon IIS local est pas visible de l'extérieur). Ce qui signifie que ce n'est pas un chemin absolu et donc la base href détruira il.

Y at-il une bonne façon de gérer cela de telle sorte qu'il fonctionnera localement sans hardcoding mais aussi fonctionner correctement lorsque téléchargé sur un serveur? Je préfère éviter tout ce qui implique de faire quelque chose de différent sur la copie côté serveur.

Oui, je me rends compte que je pouvais utiliser web.config séparer les fichiers localement et sur le serveur pour obtenir ces informations, mais ce qui est laid et viole DRY.

Était-ce utile?

La solution

Je l'ai utilisé dans le passé:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Autres conseils

Old post mais voici une autre méthode un peu moins bavard

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

Je l'ai utilisé à la suite et cela a fonctionné pour moi à la fois client et le serveur.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

Code:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top