Правильный способ доступа к файлам на другом компьютере с помощью C # - PullRequest
3 голосов
/ 10 августа 2009

Я хочу читать файлы с другого компьютера с Windows в одной сети, но НЕ с одного домена. (Приложение ASP.NET C #)
Пробовал FileStream (не может аутентифицироваться), пробовал FileWebRequest (возвращается к FileStream при использовании file: ///) и олицетворение ( support.microsoft.com / kb / 306158 # 4 ) с надписью «олицетворение» не удалось "на моей Vista.
Обновление: я исправил проблему "ошибка подражания". Но все равно получите «Отказано в доступе» с другой машины, хотя у меня «зеркальный» пользователь на обоих, поэтому вопрос остается ...
Как правильно решить эту задачу?

Ответы [ 4 ]

1 голос
/ 30 ноября 2009

Вероятно, не тот ответ, который вы ищете, но вы спросили о правильном способе, поэтому ... присоедините файловый сервер к домену и предоставьте учетной записи службы ASP.NET доступ к общему ресурсу.

0 голосов
/ 21 февраля 2014

Карта диска, например «Z:» на удаленный компьютер на компьютере, на котором выполняется ваш код. Доступ к файлу с помощью Z: ...

0 голосов
/ 01 декабря 2009

Попробуйте WebClient. Вы можете использовать это для доступа к URI, и я полагаю, что это включает использование протокола 'file' (или вы можете опубликовать удаленный файл через HTTP).

Вы можете использовать WebClient для традиционной загрузки:

WebClient.DownloadFile(Uri address, string localFile)

Или вернуть поток:

WebClient.OpenRead(Uri address)

Однако ваши проблемы с аутентификацией могут остаться. Вы можете предоставить учетные данные стандартным способом Uri, хотя это может быть невозможно при использовании протокола «file».

Я никогда не пробовал, но я думаю, что вы можете указать олицетворение в web.config

<authentication mode="Windows" />
<identity impersonate="true" username="[user]" password="[password]"/>

Хотя это звучит как угроза безопасности, приложение по умолчанию принимает учетные данные пользователя сети, а не пользователя по умолчанию.

Более подробно здесь: Как: использовать олицетворение и делегирование в ASP.NET 2.0

0 голосов
/ 10 августа 2009

Я не уверен, что это правильный подход, но я так и делаю. Предполагая, что вы знаете имя входа для этого компьютера, я P / Invoke вызываю WNetConnection к IPC $ объекту для аутентификации на машине, выполняю свою работу, затем выполняю другой P / Invoke, чтобы удалить соединение с IPC $.

...