Asp.net FileUploader не работает при использовании пути к файлу UNC

Позвольте мне начать с того, что я не эксперт в правах доступа к файлам Windows, поэтому, возможно, я упустил что-то очень простое.

У меня есть элемент управления Asp.net FileUploader. У меня есть папка на том же компьютере, что и приложение Asp.net, в которое я хочу загружать файлы.

Я хочу иметь возможность сказать FileUploader, чтобы поместить файлы в

\\thisMachineName\UploadFolder\

но я всегда получаю исключение о том, что доступ к этому пути запрещен.

Если я изменю каталог на

c:\UploadFolder\

это работает нормально. Кроме того, я могу поместить указанный выше UNC в проводник Windows, и он действительно сопоставляется с каталогом.

Любые идеи или мысли?

--Update Примечание. Это сервер Windows 2000, и для папки «Все» предоставлены все возможные разрешающие разрешения.


person spilliton    schedule 27.02.2009    source источник


Ответы (3)


Единственное, что я всегда вижу, это то, что люди не могут установить разрешения для общего ресурса. Чтобы настроить общую папку, вам необходимо сделать следующее:

1) Определите учетную запись, под которой вы будете подключаться к общей папке
2) Предоставьте этой учетной записи права доступа к файловой системе
3) Предоставьте этой учетной записи права доступа к сетевому файловому ресурсу

№ 1 в этом случае обычно означает проверку вашей конфигурации или просто использование обозревателя процессов, чтобы определить, под какой учетной записью работает ASP.NET. В гугле полно информации как это сделать.

№ 2 очевиден. Вы входите на машину, на которой существует физический диск, переходите к папке в проводнике, щелкаете по ней правой кнопкой мыши и переходите на вкладку безопасности. Мы делали это базиллион раз.

№ 3 — это место, где люди путаются. Да, рабочая учетная запись теперь имеет права на локальную файловую систему, но не на ПОДКЛЮЧЕНИЕ к локальной файловой системе по сети. На вкладке «Безопасность» вернитесь на вкладку «Общий доступ к сети» и найдите кнопку «Разрешения». Вы будете использовать это, чтобы предоставить рабочей учетной записи права на подключение к общему ресурсу.

Вторая проблема, с которой я столкнулся, — это когда люди пытаются предоставить права доступа на машине А учетной записи, которая существует только на машине Б. Как правило, это не сработает. И машина A, и машина B должны принадлежать к общему домену, которому и A, и B доверяют аутентификацию пользователей. Чаще всего предприятия под управлением Windows используют ActiveDomain для управления правами доступа в сети.

Чтобы рабочий процесс ASP.NET на компьютере B имел доступ к общему ресурсу на компьютере A, рабочий процесс должен выполняться под учетной записью, прошедшей проверку подлинности в сети, а не только на локальном компьютере. Чаще всего вам придется создать определенную учетную запись в сети и предоставить права этой учетной записи на обе машины, а затем использовать эту учетную запись для запуска рабочего процесса ASP.NET для вашего веб-сайта.

Если вы ломаете голову, вам есть чему поучиться. Это дело непростое. Настоятельно рекомендую прочитать следующее:

http://msdn.microsoft.com/en-us/library/ms978378.aspx

Это относительно ясно и содержит все, что вам нужно знать.

person Community    schedule 27.02.2009
comment
Большое спасибо Уилл! Я понятия не имел, что когда вы используете UNC (хотя в моем случае это относится к локальному компьютеру), он проходит через этот сетевой ресурс безопасности в дополнение к обычным разрешениям для папки. Я предоставил пользователю ASPNET доступ на чтение/запись к общему ресурсу, и теперь все в порядке. - person spilliton; 27.02.2009

ВЫ можете помещать файлы в этот каталог, но как насчет пользователя, от имени которого запущен процесс ASP.NET? на Windows Server 2003 (и предположительно 2008, но я не уверен) ASP.NET работает под учетной записью NETWORK SERVICE, которая почти не имеет никаких прав, особенно по сети. Вам придется использовать олицетворение в приложении ASP.NET или настроить общий доступ с доступом для всех. Для этого типа сценария я обычно просто настраиваю общий ресурс с доступом для всех и защищаю его брандмауэром, чтобы только веб-серверы имели доступ.

person Chris    schedule 27.02.2009
comment
Спасибо за ответ Крис. Я добавил примечание об обновлении в свой пост, так как забыл указать, что это сервер 2k, и разрешения, которые у меня есть для UploadFolder. Я только что попытался предоставить СЕТЕВОЙ СЛУЖБЕ полные разрешения, но все еще получаю сообщение об ошибке отказа в доступе. - person spilliton; 27.02.2009

В дополнение к ответу Уилла.

Мне пришлось предоставить разрешение учетной записи NETWORK, а не учетной записи NETWORK SERVICE.

На вкладке безопасности общей папки добавьте NETWORK в качестве нового пользователя и предоставьте необходимые разрешения.

person DreamTeK    schedule 18.11.2016