#silverlight #iis-7 #permissions #filesystems
#silverlight #iis-7 #разрешения #файловые системы
Вопрос:
РЕДАКТИРОВАТЬ: я сделал это более запутанным, чем нужно. Забудьте, что это клиент Silverlight. У меня есть служба WCF, размещенная в IIS, которая должна иметь доступ к файлу в локальной файловой системе. Потребителем этой услуги будет Silverlight, но я не думаю, что это важно, и его следовало исключить.
У меня есть приложение Silverlight, в котором я размещаю службу. В рамках этой службы я хочу прочитать текстовый файл в корне диска C. (только для тестирования). Я получаю исключение, что файл не может быть найден. Я думаю, что это проблема с разрешениями, но я не могу в этом разобраться.
Для моего идентификатора пула приложений установлено значение NetworkService. У меня установлен уровень доверия .NET на полный (внутренний). Я даже зашел так далеко, что предоставил пользователю NetworkService права на чтение текстового файла, который я пытаюсь прочитать.
Службе необходимо иметь доступ к файловой системе. Как правильно это сделать?
Спасибо,
-Скотт
Комментарии:
1. Вы читаете файл из приложения Silverlight или из службы?
2. Из службы. Все выполняется с сервера.
3. Меня беспокоит строка «Приложение Silverlight, в котором я размещаю службу». Как вы получаете доступ к сервису из клиента Silverlight?
4. Забудьте о том, что это приложение Silverlight. Думайте об этом как о простой службе WCF, которая должна считывать данные из файла на диске C. Потребителями этой услуги будут Silverlight и другие типы клиентов. Я думаю, что я сделал свой вопрос более запутанным, чем нужно, со ссылкой на Silverlight.
Ответ №1:
Прежде всего, исключите из уравнения то, чего не будет в уравнении в реальной жизни. В реальном приложении вы не будете читать из C: . Поэтому стоит подумать о том, откуда вы будете читать.
Я предлагаю, чтобы ваш файл находился в App_Data
папке веб-сайта. Поэтому попробуйте поместить туда файл, а затем получить к нему доступ из службы. Вы можете разрешить физический файл App_Data с помощью:
string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "App_PathSomeFile.txt");
Комментарии:
1. Причина, по которой я пытался читать с диска C, заключалась в том, что у меня есть несколько причин для этого. Например, я должен загрузить собственную dll usig LoadLibrary() и знал, что она будет найдена на локальном диске. Однако ваш пост заставил меня подумать, что я мог бы добавить эту dll в свой App_Data, как и все остальное. Я попробую и посмотрю, решит ли это мои проблемы. Спасибо…
2. @scott: вы рассматривали возможность размещения all в папке web apps bin?