web-dev-qa-db-fra.com

Asp.Net Chemin absolu d'une URL

Pour simplifier pour une application Web le partage de fichiers avec une autre application sur un serveur différent, j'utilise une balise href de base dans ma page maître. Comme de nombreuses personnes l’ont découvert, cela casse les chemins des formulaires Web. J'ai une classe d'adaptateur de formulaire en état de fonctionnement, mais je ne sais pas comment obtenir le chemin absolu de l'URL. Actuellement, mon programme est codé en dur pour utiliser quelque chose qui ressemble à:

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

Il est à noter que je teste actuellement sur mon serveur IIS local. Il existe donc une étrange tendance à utiliser beaucoup de choses que j'ai essayées pour que le chemin absolu n'inclue pas le nom de domaine (mon IIS n'est pas visible de l'extérieur). Ce qui signifie que ce n'est pas un chemin absolu et que la base href le détruit.

Existe-t-il un bon moyen de gérer cela de manière à ce que cela fonctionne localement sans codage en dur mais fonctionne également correctement lors du téléchargement sur un serveur? Je préférerais é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 pourrais utiliser des fichiers web.config distincts localement et sur le serveur pour obtenir ces informations, mais cela est moche et constitue une violation de DRY.

49
Brian

J'ai utilisé cela 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;
110
John Rasch

Ancien post mais voici une autre méthode légèrement moins verbeuse

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

J'ai utilisé la suite et cela a fonctionné pour moi le client et le serveur.

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