Comment créer un hyperlien entièrement qualifié à une ressource dynamiquement?

StackOverflow https://stackoverflow.com/questions/3028427

  •  26-09-2019
  •  | 
  •  

Question

Dans asp.net, j'aimerais créer un lien qui pointe vers un URI spécifique et envoyer ce lien dans un e-mail à un utilisateur, par exemple quelque chose comme http://www.BlaBla.com/CustomerPortal/Order/9876. Je peux créer la deuxième partie de l'URI /CustomerPortal/Order/9876 dynamiquement dans le code-bind. Ma question est: comment puis-je créer l'uri de base http://www.BlaBla.com Sans le codage dur dans mon application? Fondamentalement, je veux avoir quelque chose comme:

http://localhost:1234/CustomerPortal/Order/9876 (on my development machine)
http://testserver/CustomerPortal/Order/9876 (on an internal test server)
http://www.BlaBla.com/CustomerPortal/Order/9876 (on the production server)

Il y a donc un moyen de demander au serveur où l'application est en cours d'exécution: "Veuillez me dire l'uri de base de l'application"? Ou une autre manière?

Merci d'avance!

Était-ce utile?

La solution

Qu'en est-il de le placer dans le web.config

<configuration>
    <appSettings>
       <add key="SendingUrlBase" value="http://www.BlaBla.com"/>

Autres conseils

Quelque chose comme ça:

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath.TrimEnd('/')

Vous devez mettre une clé dans la configuration, quelque chose Quelque part, parce que lorsque vous pensez à votre application Web, ce n'est pas vraiment lié à une URL. Par exemple:

http://localhost:1234/
http://yourMachineName:1234/
http://yourMachineName.domain.com:1234/
http://127.0.0.1:1234/

Ce ne sont que quelques façons de se rendre au même site localhost....Lequel est-ce? Le même problème existe dans la production, des dizaines de domaines ou IPS peuvent indiquer la même application Web, et il utilise des en-têtes d'hôte ou peut-être rien pour le distinguer. Le fait est que, en dehors du contexte d'une demande, le site ne sait pas vraiment quelle URL elle va, pourrait être n'importe quoi, il n'y a tout simplement pas une relation 1: 1 là-bas.

Si vous sommes Dans le contexte d'une demande lors de l'envoi d'un e-mail, jetez un œil à HttpRequest.Url, c'est un Uri taper, et Vous pouvez voir les propriétés disponibles ici.

Vous pouvez faire quelque chose comme ceci:

var host = HttpContext.Current.Url.Host;
//generate your link using the host
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top