Если вы запускаете это из веб-приложения, и это весь управляемый код, то HttpContext должен существовать. Есть ли у вашей дочерней библиотеки (если ваш управляемый код находится в библиотеке) ссылка на System.Web? Если нет, рассмотрите возможность добавления этой ссылки. С этого момента вы сможете получить доступ к HttpContext напрямую, используя полное пространство имен:
System.Web.HttpContext.Current.Request.Url.Host
В любом случае, если ваш код неуправляемый или ваш контекст действительно не создается веб-приложением, HttpContext должен быть доступен в любой точке, пока поток жив.
Редактировать:
Судя по прочтению вашего комментария ниже, похоже, что SqlDependency запускается независимо. Пока он находится в том же потоке, он не запускается напрямую по запросу. Поскольку все, что вам нужно - это URL-адрес хоста, не исключено, что вы можете создать переменную приложения или статическую переменную для хранения этой информации в случае, если она необходима для зависимости.
Также я видел, что, хотя HttpContext.Current
может быть недоступно, HttpContext.Request
может быть. Это должен быть один и тот же объект, но это не обязательно так. Возможно, там находится Хозяин.