Создайте папку на NTFS-сервере, используя веб-интерфейс C # - PullRequest
0 голосов
/ 11 сентября 2018

Я реализую приложение, которое создаст папку на файловом сервере NTFS. Для этого я настроил распределенную среду. Это означает, что у меня есть компьютер, на котором я разместил свой C # Web API, и у меня есть файловый сервер NTFS, на котором я должен создавать папки.

Я хочу, чтобы мой API создавал папку на NTFS-машине. Как я могу это сделать? Нужно ли использовать NTFS Drive / Folder для создания подпапки? Если так, то с кем мне нужно делиться папкой NTFS ( либо пользователь сервера или IIS_USRS )?

Есть ли другой способ создать папку без совместного использования диска / папки в папке NTFS.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Дело 1:

если веб-сервер и файловый сервер находятся в одном домене, можно использовать пользователя домена и создать общую папку на сервере NTFS и предоставить полный доступ для пользователя домена, который обращается к нему. (зависит от ваших требований).

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

Случай 2, Веб-сервер и файловый сервер не находятся в одном домене, обычно я устанавливаю на файловом сервере ftp-сервер, чтобы разрешить доступ к нему конкретным пользователям (создание папок и загрузка файлов ....). В противном случае, когда вам может понадобиться, чтобы ваш ИТ-администратор сделал домен файлового сервера доверенным домену веб-сервера, вы можете сделать то же самое, что и в случае 1.

О коде олицетворения это может быть что-то вроде:

    //get the identity of an appPool 
         using(System.Security.Principal.WindowsIdentity wid = System.Security.Principal.WindowsIdentity.GetCurrent())
         {
             using (System.Security.Principal.WindowsImpersonationContext ImpersonationCtx = wid.Impersonate())
             {
                 //creating folders, uploading files to UNC path... 

                 ImpersonationCtx.Undo();
             }
         }

Если ваше дело относится к этому, надеюсь, это поможет.

0 голосов
/ 11 сентября 2018

Когда я делал это в прошлом, я делал это через временное подражание.Например ...

using (Impersonator impersonate = new Impersonator(@"UserName", "Password", "Domain")) 
{
     //Create directory or copy files across the network
}

Мне кажется, я поднял свой код подражателя из Небольшой класс C # для выдачи себя за пользователя

...