я столкнулся с этой странной проблемой:System.IO.Directory.Exists в веб-приложении
В веб-приложении .net, есть некоторый код эквивалентен следующему:
if (Directory.Exists("config"))
{ ... }
Это в основном проверяет чтобы узнать, существует ли C: \ Windows \ system32 \ inetsrv \ config каталог, почему код написан так, как это выходит за меня и этот вопрос.
Что меня смущает, приведенный выше код вернет false на двух серверах и вернет true на других. (Я ожидал, что он возвращает истину все время, так как C: \ Windows \ system32 \ Inetsrv \ Config является каталогом системы в Server 2008)
Вопрос: Я хочу знать, почему на тех, два сервера этот оператор вернет false. Где я должен смотреть?
Ограничение: я не могу изменить какой-либо код (обфускации/подписанные сборки), но у меня есть полный доступ к серверам.
Обновление: ответ, по-видимому, довольно прост ... на этих двух конкретных серверах кто-то развернул более новую версию конкретной DLL, которая ведет себя по-разному. Черт!
В соответствии с [документацией] (http://msdn.microsoft.com/en-us/library/system.io.directory.exists.aspx) он может вернуть значение false, если вызывающий объект не имеет разрешения.Просто угадайте, но у программы, возможно, нет привилегий для чтения системного каталога по любой причине. Я не знаю, как его решить, но вы, вероятно, можете начать искать в этой области. –
Возможно ли, что на серверах установлены разные текущие каталоги? Некоторые из них можно запустить из каталога 'inetsrv', а другие - из' System32'. – Gabe
@Jeff, спасибо, я дважды проверю; @Gabe, я тоже об этом думал, но не знаю точно, как проверить, какие-нибудь предложения? –