Из библиотеки управляемых классов я хотел бы узнать, является ли исполняемое приложение в настоящее время веб-приложением ASP.NET(веб-формы или MVC) или нет.
Я видел разные подходы к этому, например. путем проверки одного из следующих значений:
-
System.Web.Hosting.HostingEnvironment.IsHosted == true
-
System.Web.HttpContext.Current != null
-
System.Web.HttpRuntime.AppDomainAppId != null
-
System.Web.HttpRuntime.Cache != null
- проверка файла
web.config
(примечание: я не считаю это надежным)
Вопрос в том, какой подход я должен использовать? Являются ли некоторые из них недействительными (например, могут ли они возвращать true даже при работе в приложении Windows) или все они равны?
Обновление/уточнение (извините, если мой вопрос не был достаточно ясным):
- У меня есть библиотека управляемых классов (.net-код), которая запускается приложением .net(очевидно)
- это "хост-приложение" может быть либо ASP.NET-приложением (например, веб-формами или MVC), либо приложением Windows (например, консоль или формы выигрыша).
- мой вопрос: есть ли способ надежно определить из моей библиотеки классов (во время выполнения), выполняется ли она как часть приложения ASP.NET?
Примечание. Я знаю, что могу реализовать другое решение (например, см. комментарии ниже или ответ Томаса Ликена), но это не вопрос этого вопроса. Библиотека классов уже существует, и я хотел бы изменить как можно меньше кода!