Déterminer le nom d'hôte URL sans utiliser HttpContext.Current?
À l'aide de la requête courante, je peux obtenir le nom d'hôte de l'URL:
HttpContext.Current.Request.Url.Host
Mais - je besoin pour déterminer le nom d'hôte de l'URL sans l'aide de la requête courante (HttpContext.Current
). La raison pour cela est que mon code est appelé à partir d'un SqlDependency
dans le onChange de rappel lorsqu'une Dépendance SQL est trouvé. Althougth le code réside dans mon application web, il n'y a pas de demande, et HttpContext.Current
est null.
J'espérais que je pourrais prendre de HttpRuntime
mais il ne semble pas être quelque chose d'utilisation. est il possible que je peux trouver cette information?
source d'informationauteur Matt Roberts
Vous devez vous connecter pour publier un commentaire.
Si vous connaissez l'hôte au moment où vous êtes en train de configurer le gestionnaire d'événements, alors vous devriez être en mesure de faire quelque chose comme (code non testés):
Si vous exécutez ce à partir d'une application web, et c'est l'ensemble du code managé puis HttpContext doit exister. Est-ce que votre enfant à la bibliothèque (en supposant que votre code managé est dans une bibliothèque) ont une référence à System.Le Web? Si pas, envisager d'ajouter cette référence. À partir de ce point, vous devriez être en mesure d'accéder à la HttpContext directement en utilisant l'espace de noms complet:
Dans tous les cas, à moins que votre code n'est pas géré ou votre contexte n'a vraiment pas d'proviennent d'une application web, HttpContext devrait être disponible à chaque point tandis que le thread est en vie.
Edit:
Basé sur la lecture de votre commentaire ci-dessous, il semble que les SqlDependency est déclenché de façon indépendante. Alors qu'il est sur le même thread, c'est de ne pas être alimentées directement par la demande. Car tous vous êtes à la recherche pour les est l'hôte de l'url, il n'est pas inconcevable que vous pouvez créer une variable d'application ou d'une variable statique de tenir cette information dans le cas où il est nécessaire pour une dépendance.
Aussi quelque chose que j'ai vu, c'est que tout
HttpContext.Current
peuvent ne pas être disponibles,HttpContext.Request
peut-être. Ceux-ci devraient être le même objet, mais ils ne peuvent pas nécessairement être. Il est possible que l'Hôte peut être trouvé là.Comment sur
Vous devez utiliser l'IIS de l'api pour interroger les informations à partir du site web que vous recherchez. Car en fonction de la configuration IIS votre URL ou le nom d'hôte pourraient être différentes. (Pensez à hostheaders, des ports, protocoles et des trucs comme ça.
Une introduction pour IIS API peut être trouvé à http://learn.iis.net/page.aspx/165/how-to-use-microsoftwebadministration/