Как узнать, является ли текущее приложение веб-приложением ASP.NET

Из библиотеки управляемых классов я хотел бы узнать, является ли текущее выполняемое приложение веб-приложением 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 (примечание: я не думаю, что это надежно)

Вопрос в том, какой подход я должен использовать с помощью? Некоторые из них недействительны (например, могут ли они возвращать истину даже при работе в приложении Windows) или все они равны?


Обновление / уточнение (извините, если мой вопрос был недостаточно ясным):

  • У меня есть библиотека управляемых классов (код .net), которая запускается приложением .net (очевидно)
  • , это «хост-приложение» может быть либо приложением ASP.NET (например, веб-формы или MVC), либо приложением Windows ( например, консольные или выигрышные формы)
  • мой вопрос : есть ли способ надежно определить из моей библиотеки классов (во время выполнения), выполняется ли она как часть приложения ASP.NET?

Примечание : я знаю, что могу реализовать другое решение (например, см. Комментарии ниже или ответ Томаса Ликена), но вопрос не в этом. Библиотека классов уже существует, и я хотел бы изменить как можно меньше кода!

14
задан M4N 15 August 2011 в 12:45
поделиться