2009-02-27 3 views
4

Позвольте мне начать с того, что я не эксперт по разрешению файлов Windows, поэтому, возможно, есть что-то очень основное, что я здесь отсутствует.Asp.net FileUploader не работает при использовании пути к UNC-файлу

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

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

\\thisMachineName\UploadFolder\ 

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

Если изменить каталог, чтобы быть

c:\UploadFolder\ 

он работает отлично. Кроме того, я могу поместить вышеупомянутый UNC в Windows Explorer, и он фактически отображает каталог.

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

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

ответ

3

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

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

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

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

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

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

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

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

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

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

+0

Большое спасибо! Я понятия не имел, что, когда вы используете UNC (хотя в моем случае это относится к локальному компьютеру), он прошел через этот сетевой ресурс безопасности в дополнение к нормальным разрешениям папки. Я дал пользователю доступ к ресурсам для доступа к ресурсам ASPNET, и теперь все это подливка. – spilliton

1

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

+0

Спасибо за ответ Крис. Я добавил примечание по обновлению к моему сообщению, так как я забыл включить, что это сервер сервера 2k и разрешения, которые у меня есть на UploadFolder. Я просто попробовал предоставить полные разрешения «NETWORK SERVICE», и я все еще получаю отказ в доступе к доступу. – spilliton

0

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

Я должен был предоставить разрешение на учетную запись: NETWORK, а не учетную запись NETWORK SERVICE.

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

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