Asp.net FileUploader не работи при използване на UNC файлов път

Позволете ми да започна, като кажа, че не съм експерт по разрешенията за файлове на Windows, така че може би има нещо много основно, което пропускам тук.

Имам контрола на Asp.net FileUploader. Имам папка на същата машина като приложението Asp.net, в която бих искал да се качват файлове.

Искам да мога да кажа на FileUploader да постави файловете

\\thisMachineName\UploadFolder\

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

Ако сменя директорията да бъде

c:\UploadFolder\

работи добре. Освен това мога да поставя горния UNC в Windows Explorer и той всъщност се съпоставя с директорията.

Някакви идеи или мисли?

--Забележка за актуализиране: Това е сървърна кутия на Windows 2000 и папката има „Всички“ с всички възможни разрешения за разрешаване.


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


Отговори (3)


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

1) Определете акаунта, под който ще се свързвате към споделянето
2) Предоставете на този акаунт права за достъп до файловата система
3) Предоставете на този акаунт права за достъп до споделянето на мрежови файлове

Номер 1 в този случай обикновено означава проверка на вашата конфигурация или просто използване на Process Explorer, за да определите под какъв акаунт работи ASP.NET. В гугъл има много информация как да направите това.

Номер 2 е очевидният. Влизате в машината, където съществува физическото устройство, разглеждате папката в Explorer, щракнете с десния бутон върху нея и натиснете раздела за защита. Правили сме това милиони пъти.

Номер 3 е мястото, където хората бъркат. Да, работният акаунт вече има права към локалната файлова система, но не и да се СВЪРЗВА към локалната файлова система през мрежата. От раздела Сигурност прескочете обратно до раздела за мрежово споделяне и потърсете бутон Разрешения. Ще използвате това, за да предоставите на работния акаунт права за свързване към споделянето.

Вторият проблем, който съм виждал, е когато хората се опитват да предоставят права за достъп на машина A на акаунт, който съществува само на машина B. Това по принцип няма да работи. Както машината 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. Току-що се опитах да дам пълни разрешения на NETWORK SERVICE и все още получавам грешката отказан достъп. - person spilliton; 27.02.2009

В допълнение към отговора на Уил.

Трябваше да дам разрешение на акаунта : NETWORK, а не на акаунта NETWORK SERVICE.

В раздела за защита на споделената папка добавете NETWORK като нов потребител и дайте необходимите разрешения.

person DreamTeK    schedule 18.11.2016