10
votes

Accès Nom de domaine actuel sur Application_Start

Normalement pour accéder au nom de domaine actuel, par exemple, où le site est hébergé, je fais quelque chose comme xxx

mais httpcontext n'est pas disponible sur Application_Start seulement à partir de Application_beginrequest .

Des idées?


4 commentaires

Sorte de liaison? Stackoverflow.com/Questtions/2180905/...


duplicaté possible de Comment comment Pour obtenir le nom d'hôte complet + numéro de port dans Application_Start de global.aspx?


Oui, vous n'avez pas vu que lorsque vous regardez et cela n'a pas été signalé lorsque j'ai saisi la question. marqué pour la suppression.


Vous pouvez également essayer system.web.hosting.hostingenvironment.sitename . Ce n'est pas strictement le nom de domaine, mais est le nom du site IIS.


4 Réponses :


8
votes

Une seule application IIS peut être lié à de nombreuses URL différentes. Application_Start Les incendies avant que toute demande ait été reçue, le seul moyen de trouver le nom de domaine auquel le site est lié est d'interroger IIS.

Même alors, vous ne pourrez peut-être pas obtenir de réponse - considérez la situation dans laquelle une application est liée à un nom d'hôte WildCard / Default.

Une meilleure approche peut être de regarder Application_AuthenticateRequest . Cela déclenche avant Application_beginrequest et vous donne un complet httpcontext.current.request objet.


2 commentaires

Pensé que cela pourrait être quelque chose comme ça, mettant l'URL à accéder au web.config, je pense que c'est la meilleure voie à suivre.


Application_Start Feise uniquement lorsque l'application - EH - commence. :) Cela ne répond pas avec précision à la question.



3
votes

L'application IIS ne sait pas quel domaine l'accès à partir de (voir les liaisons) au début de l'application.


0 commentaires

7
votes

Essayez dns.gethostname () code> .

Vous pouvez l'utiliser dans gloabl.asax.cs, peu importe dans Application_Start () ou non. P>

var hostName = Dns.GetHostName();


1 commentaires

Notez que cela ne fonctionne peut-être pas toujours comme prévu. Par exemple, sur mon ordinateur local, j'ai une entrée d'hôtes pour un domaine (E.G. Exemple.com), ainsi que des liaisons configurées dans IIS. Lorsque vous utilisez cette méthode, cependant, je reçois le nom de l'ordinateur et non le nom de domaine. Dans ce scénario, je reçois quelque chose comme "vm-dev1".



2
votes

Un moyen d'y parvenir est un peu de triche et est livré avec des mises en garde, et c'est utiliser system.web.hosting.hostingenvironment.sitename .

Donc : xxx

et maintenant pour ces mises en garde:

  • C'est le nom du site dans IIS.
  • Cela signifie que votre nom de site peut être un non-Uri (par exemple, mon site génial).
  • Si vous avez plusieurs domaines partageant le même site, ce sera le même pour chacun.

    à mes besoins - Configuration de la connexion sur des serveurs où j'avais plusieurs sites dans IIS pointant vers le même dossier physique - la solution ci-dessus était probablement la plus simple et la plus facile. Je ne dis pas que c'est nécessairement la "bonne" réponse ", mais elle devrait être considérée comme une alternative.


0 commentaires