ASAX global: obtenga el nombre del servidor

¿Alguien puede decirme si hay una forma de que obtenga el nombre de dominio de mi sitio en el evento Application_Start en el archivo global.asax?

Normalmente lo obtendría de Context.Request.ServerVariables [“SERVER_NAME”], pero esto no está disponible. Idealmente, también me gustaría obtener la URL de la solicitud que inició la aplicación.


Hmm: de las respuestas a continuación, parece que estar en IIS7 hace una diferencia aquí. Esto es nuevo y ahora hay pautas de diseño para intentar evitar que lo haga:

Blog de IIS

Puede acceder al contexto a través del miembro HttpContext.Current estático.

HttpContext.Current.Request.ServerVariables["SERVER_NAME"]; HttpContext.Current.Request.Url; 

Editar, Basándome en algunos de sus comentarios, investigué un poco más

Este error se debe a un cambio de diseño en la interconexión integrada de IIS7 que hace que el contexto de solicitud no esté disponible en el evento Application_Start. Al usar el modo Clásico (el único modo cuando se ejecuta en versiones anteriores de IIS), el contexto de solicitud solía estar disponible, incluso aunque el evento Application_Start siempre se haya concebido como un evento global y de solicitud independiente en la vida útil de la aplicación. A pesar de esto, dado que las aplicaciones ASP.NET siempre se iniciaron con la primera solicitud a la aplicación, antes era posible acceder al contexto de la solicitud a través del campo estático HttpContext.Current.

Así que tienes dos opciones

  1. Cambie el código de la aplicación para no usar el contexto de solicitud (recomendado).
  2. Mueva la aplicación al modo Clásico (NO recomendado).

http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart/

Su aplicación web podría ejecutarse bajo múltiples dominios diferentes. Como no hay una solicitud actual en el evento Application_Start , no puede saber bajo qué dominio se llamará la aplicación.

Sin embargo, puede encontrar el nombre del equipo usando System.Environment.MachineName .

¿Supongo que estás en IIS 7? Porque HttpContext está disponible allí en IIS 6.0.

¿Puede considerar completar esa información más adelante? ¿La primera llamada a Application_BeginRequest por ejemplo?

En VB.NET, en Global.asax, uso lo siguiente:

 Hosting.HostingEnvironment.ApplicationHost.GetSiteName 

Corresponde al nombre de la aplicación en IIS.

ACTUALIZACIÓN: parece que el método “GetSiteName” no está destinado a ser llamado directamente y ya no funciona para mí en Visual Studio 2015 (o tal vez es porque la versión de framework cambio que hice). Lo arreglé reemplazándolo por:

 System.Web.Hosting.HostingEnvironment.SiteName 

¿Tiene acceso al objeto Request en absoluto? Si es así, creo que podrías usar Request.Url.Authority

Devolverá el nombre de host del DNS que es lo que está buscando.

GRAMO

Has probado: –

 System.Web.HttpContext.Current.Request.ServerVariables["SERVER_NAME"] 

Gracias,

Phil.