Заполните пустые:Как проверить, если контекст является службы Windows или консольного приложения
Если кусок кода на DLL используется в различных контекстах, и мы должны определить, какой контекст мы бежим дальше, мы должны использовать:
Web Application ->System.Web.HttpContext.Current != null
WCF веб-службы ->System.ServiceModel.Operationcontext.Current != null
Windows Service || ConsoleApp ->______________________________________________________
Кроме того, если вы знаете лучший вариант для проверки одного из первых двух, сообщите нам пожалуйста.
О том, что это может быть дубликат от another question: мне не нужно различать службу Windows и консольное приложение (интерактивный пользователь или нет).
EDIT: Зачем мне это нужно?
Мне нужно открыть файл конфигурации для запущенного приложения из библиотеки, которая может работать в разных контекстах. Это то, что я в настоящее время:
Configuration appConfig = null;
if (System.Web.HttpContext.Current != null || System.ServiceModel.OperationContext.Current != null)
{
// The call was originated from a web application or from a WCF web service.
appConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
// The call may have been originated from a console application or a windows service.
// THE ANSWER TO MY SO QUESTION WOULD ALLOW ME TO INSERT AN IF HERE!!
appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
части иначе предполагая, я бегу на ехе, как окружающая среда (Windows Service, консоль приложения). Я хотел бы включить if
, чтобы быть уверенным, что OpenExeConfiguration
не будет генерировать исключение.
Я уже рассматривал использование блоков try, но это не подходит для моего дела.
@ user2893289 Я отредактировал свой вопрос, чтобы указать, почему это не дубликат. – daniloquio
, возможно, вам стоит объяснить, почему вы должны это знать. –
Практически всегда лучше выставлять точки расширения, чтобы ваш потребитель мог подключаться и выбирать наиболее подходящее поведение, а не вашу DLL «магически», решающую лучший способ сделать что-то. –