Quando il nome host è disponibile in HttpContext.Request.Url.Host
, è il risultato del fatto che il nome host fa parte della richiesta inviata dal client. A titolo di esempio, prendere una richiesta a questa pagina:
GET /questions/2164261/get-host-name-without-using-httprequest HTTP/1.1
Host: stackoverflow.com
...
Quando viene eseguito in un thread in background, senza contesto di richiesta è disponibile, e non c'è davvero alcun concetto di un nome host a tutti. L'unica alternativa è memorizzare il nome host nel codice o nella configurazione.
Argomento leggermente fuori luogo: l'esecuzione di attività pianificate all'interno di un'applicazione Web richiede problemi e i thread di spawning si occupano solo di alcuni di essi. Se possibile, prendere in considerazione l'esecuzione dei lavori pianificati da un servizio Windows, possibilmente costruito utilizzando un framework come NCron.
fonte
2010-01-29 18:41:24
inizialmente pensavo a Dns.GetHostName(), ma restituisce il nome host della macchina, non necessariamente l'URL dell'host della richiesta (cioè se si hanno più collegamenti in IIS). Se tutto ciò di cui hai bisogno è il nome host della macchina, puoi usare Dns.GetHostName() –