2016-07-11 2 views
-1

Я пытаюсь получить доступ к сетевому диску, с C#, я пытался это сделать:C# Доступ к сетевой диск

if (!Directory.Exists(path)) //With \\Server\path 

ИЛИ

if (!(new FileInfo(path).Exist)) //With \\Server\path 

И скажите мне, что это не существует.

Должен сказать, я запускаю сайт ASP.NET, и я пытаюсь добраться до него оттуда, я не знаю, имеет ли это значение?

То, что я пытаюсь сделать, - это то, что моей DLL нужен путь к корневому каталогу его содержимого, поэтому мне нужно указать путь, путь находится на диске S, но диск S не является логическим диском, это сетевой диск.

Мы запускаем веб-сайт IIS в качестве администратора всего домена, чтобы не иметь привилегий.

+1

Вы пробовали @ "\\ server \ path \ ..."? – tym32167

+1

Возможно, это проблема с разрешением. Ваше приложение ASP будет работать как конкретный локальный пользователь, у которого не будет доступа. – DavidG

+4

Это также плохая идея предоставить права доступа к сети IIS. В принципе, не делайте этого. Это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) (* DLL требуется путь к корневому каталогу его содержимого *) – Liam

ответ

-3

Для проверки файла существует, вы должны использовать это:

if(!File.Exists("path")) 

Для проверки папки существует, вы должны использовать это:

if (!Directory.Exists("Path")) 
+1

Прохладный рассказ ...;) Он не спрашивает об этом. Проблема заключается в том, что IIS не имеет разрешения по умолчанию – Liam

+0

ok-его проверка пути была ошибкой – AmirhosseinYari

0
Server\\path\path\path 

не похож на правильный имя пути UNC мне.

\\Server\path\path\path 

должно быть правильным.

Во-вторых, учетная запись пользователя, под которой выполняется ваш IIS-процесс, должна иметь соответствующие разрешения для соответствующего сетевого местоположения. Используемый идентификатор обычно определяется пулом приложений, в котором он находится, или если ваше приложение использует олицетворение, которое оно может идентифицировать как пользователь клиента. В любом случае вы должны быть осторожны, чтобы предоставить разрешения, абсолютно необходимые для приложения, и не более того.

+0

N.B. информация UNC была основана на информации первоначального вопроса, который был теперь отредактирован. Я предлагаю, чтобы разрешения все еще были проблемой. Просто потому, что ваш IIS является администратором сервера (который является идеей ОЧЕНЬ ПЛОХОЙ), не означает, что он может получить доступ к сетевому местоположению. – ADyson

+0

Е. Я редактировал свой вопрос, чтобы предоставить дополнительную информацию для вас, ребята, но я пользуюсь сетевым администратором, поэтому я не знаю, почему у меня нет прав на него? – runefist

+0

Вы отредактировали сообщение, в котором говорится, что путь не существует. Вы проверили, что путь действителен вне приложения? например войдите на сервер в качестве пользователя, под которым работает приложение, и убедитесь, что путь (как используется приложением) определенно существует? – ADyson

0

После установки для пула и веб-сайта администратора как учетной записи, которая запускает процесс, добавив «@», а «\» нам удалось получить доступ к сетевой папке (спасибо всем!), Текущий статус: DLL говорит, что он не может найти путь к нему ...

Итак, у нас есть код, который мы написали прямо сейчас, но DLL говорит, что он не может найти путь, поэтому мы связались с владельцем, который создал DLL.

Смежные вопросы