У меня есть служба WCF, поддерживающая IIS, и я пытаюсь использовать метод Directory.Exists()
. Если несуществующее сетевое местоположение передано, этот метод зависает. Я искал это для поиска и обнаружил, что это «нормально» из-за внутренней реализации Directory.Exists()
. Но я написал простое консольное приложение, которое делает то же самое и Directory.Exists()
никогда не зависает, всегда возвращает 'false
'. Я запускаю приложение под учетной записью (admin), а пул IIS работает под «Сетевой службой».
У вас есть идеи, почему? В чем разница между тем, что делается внутри службы или консольного приложения?Directory.Exists() странное поведение
ответ
Ключевым моментом здесь является работа с сетевым сервисом и учетной записью администратора.
Вы знаете, что более поздние могут активировать сетевое расположение, но вы не уверены, может ли раньше.
Вот один пример случая, когда вы могли бы ожидать есть доступ, но это на самом деле не работает: https://serverfault.com/a/177150
Тот факт, что машина с общим приводом не является на домен где ваша основная проблема:
Это может быть вызвано из-за элементов управления авторизацией пользователей, которые присутствуют в Windows (помните, когда вы пытаетесь получить доступ к папке, в которой у вас нет доступа в Windows? Это вроде долго ждет ответа «Вы не можете доступ, ... "или что-то в этом роде).
Какой пользователь вы используете приложение? Ваш идентификатор пользователя (согласно тому, что вы сказали, вы можете получить доступ к этой папке, использующей консольное приложение), может видеть эту папку.
Итак, попробуйте запустить приложение как свой собственный идентификатор пользователя.
Кроме того, проверьте эту ссылку: https://stackoverflow.com/a/21385162/1378854
вы уверены, что приложение работает как сетевая служба? У локальной учетной записи сетевой службы не будет доступа к сети.
Используйте UNC-путь вместо подключенного сетевого диска, поскольку сопоставленный диск специфичен для вашей учетной записи пользователя. Кроме того, как указал KMan, убедитесь, что идентификатор пула приложений имеет доступ к назначению пути UNC.
перейдите по этой ссылке:
http://msdn.microsoft.com/en-us/library/ff649309.aspx How to get working path of a wcf application?
спасибо.
- 1. странное поведение $?
- 2. странное поведение
- 3. Странное поведение «+ =»
- 4. Странное поведение
- 5. Странное поведение?
- 6. Странное поведение
- 7. Странное поведение
- 8. Пользовательское поведение UIView странное поведение
- 9. PyCharm - Python Странное поведение
- 10. JQuery click() странное поведение
- 11. странное поведение PHP сессии
- 12. Java8 streams странное поведение
- 13. Странное поведение разбиения строки
- 14. C - fgets странное поведение
- 15. scala regex странное поведение
- 16. C++ показывает странное поведение
- 17. странное поведение as.POSIXct
- 18. Качели JComboBox странное поведение
- 19. Странное поведение JAVAGC
- 20. C++: Странное поведение `new`
- 21. Странное поведение JSON?
- 22. Странное поведение выбора
- 23. Странное поведение Java параллелизм
- 24. странное поведение == в Java
- 25. GetAsyncKeyState «странное» поведение
- 26. Странное поведение с HasRequired
- 27. LINQ Содержит странное поведение
- 28. Странное поведение javascript
- 29. .Net Parallel.For странное поведение
- 30. странное поведение на DateTime
Как вы обнаруживаете повесить? И в котором TrustLevel запускает ваш IIS? – TGlatzer
@ Grumbler85 Я вижу, что использование отладчика и ведение журнала (что фактически останавливается в точке вызова метода). Я запускаю службу в IIS 7.5, я не изменял настройки уровня доверия. –
Вы можете попробовать запустить пул приложений для службы IIS временно как локальную систему - если она работает нормально в локальной системе, вы знаете, что это связано с разрешением. –