У меня есть интерфейс, назовем его ILocateLogFile
со стандартной реализацией для dev/beta/production серверов, и тот, который работает только в локальной среде разработки. Кажется, я не думаю о хорошем чистом способе решения (желательно во время компиляции, но время выполнения будет прекрасным), если я запускаю локально или на сервере. Это приложение WCF, размещенное на IIS, если это имеет значение.Как узнать, работает ли код локально из Visual Studio/Cassini
Лучшее, что я придумал, чтобы использовать символ компилятора, что-то вроде:
ILocateLogFile locateLogFile;
#if DEBUG
locateLogFile = new DevSandboxLogFileLocator();
#else
locateLogFile = new LogFileLocator();
#endif
Проблема заключается в том, компилировать символы приготовьтесь построителем, что я не в силах контролировать, и я хочу быть уверенным. Не существует ли какой-либо автоматизированный способ проверки наличия Visual Studio? Или, по крайней мере, проверить Cassini, а не IIS?
Я видел это прежде, чем решить путем проверки переменного имени сервера в другом, если заявлении. – RandomUs1r
Любые причины не использовать файлы .config для настройки ведения журнала? (вероятно, у вас уже есть разные .config для каждой среды, поэтому для добавления журнала также может быть тривиально). –
@ RandomUs1r, это хорошее предложение, но я не могу использовать 'System.Web.HttpContext', потому что моя служба WCF не использует совместимость ASP.Net ... – McGarnagle