Cuando el nombre de host está disponible en HttpContext.Request.Url.Host
, es el resultado de que el nombre de host sea parte de la solicitud enviada por el cliente. A modo de ejemplo, tomar una solicitud a esta página:
GET /questions/2164261/get-host-name-without-using-httprequest HTTP/1.1
Host: stackoverflow.com
...
Cuando se ejecuta en un subproceso en segundo plano, sin contexto de la petición está disponible, y realmente no hay concepto de un nombre de host en absoluto. Su única alternativa es almacenar el nombre de host dentro del código o en la configuración.
Tema ligeramente fuera de línea: ejecutar tareas programadas dentro de una aplicación web es buscar problemas, y los hilos de desove solo se ocupan de algunos de ellos. Si es posible, considere ejecutar sus trabajos programados desde un servicio de Windows, posiblemente construido usando un marco como NCron.
al principio pensé Dns.GetHostName(), pero eso devuelve el nombre de host de la máquina, no necesariamente la URL de host de la solicitud (es decir, si tiene enlaces múltiples en IIS). Si todo lo que necesita es el nombre de host de la máquina, entonces puede usar Dns.GetHostName() –