Запись файлов на сетевой диск из IIS с использованием управляемой учетной записи службы - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть приложение ASP.NET MVC 5, размещенное в IIS 10 в Windows 2016. Наши системные администраторы создали управляемую учетную запись службы (MSA), которая связана с этим сервером и имеет разрешения на чтение / запись для папки в сети.,Мне нужно написать PDF-файлы в эту папку из веб-приложения, используя MSA.

В настоящее время я просто пытаюсь записать в папку простой текстовый файл:

System.IO.File.WriteAllText(@"\\SomeUncPath\Reports\test.txt", "sample text");

Выше приведено сообщение об ошибке, которое следует ожидать,

System.UnauthorizedAccessException: доступ к пути '\ SomeUncPath \ Reports \ test.txt' запрещен.

Я следил за этим видео: https://www.youtube.com/watch?v=lBv81lwZgIo безрезультатно.Это просто вызвало ошибку 503 на сайте.

Можно ли записывать файлы, используя олицетворение C #, как описано в этой статье ?Но как вы выдаете себя за MSA, пароль которого установлен системой?

Я попробовал следующий код, используя SimpleImpersonation :

var cred = new UserCredentials("myDomain", "someMsa$", "");
Impersonation.RunAsUser(cred, LogonType.Batch, () =>
    {
        System.IO.File.WriteAllText(@"\\SomeUncPath\Reports", "sample text");
    }
);

Выше приведено следующее:

System.ArgumentException: пароль не можетбыть пустым или состоять только из пробельных символов.Имя параметра: пароль

Обновление 1: Сервер выдает следующую ошибку в системный журнал:

Пул приложений SomePool отключен.Служба активации процессов Windows (WAS) обнаружила сбой при запуске рабочего процесса для обслуживания пула приложений.

И эти два предупреждения:

Пул приложений SomePool былотключен.Служба активации процессов Windows (WAS) не создала рабочий процесс для обслуживания пула приложений, поскольку удостоверение пула приложений недопустимо.

и

Удостоверение пула приложенийSomePool недействителен.Имя пользователя или пароль, указанные для идентификатора, могут быть неправильными, или пользователь может не иметь прав на пакетный вход.Если идентификатор не исправлен, пул приложений будет отключен, когда пул приложений получит свой первый запрос.Если проблема связана с правами пакетного входа, удостоверение в хранилище конфигурации IIS должно быть изменено после предоставления прав, прежде чем служба активации процессов Windows (WAS) сможет повторить вход в систему.Если идентификатор остается недействительным после обработки первого запроса для пула приложений, пул приложений будет отключен.Поле данных содержит номер ошибки.

Я попытался this и перезагрузил сервер, но проблема остается.

Обновление 2: Если я предоставлю пулу приложений свои учетные данные, приложение загрузится без проблем.Это только на MSA, что это терпит неудачу с вышеупомянутой ошибкой / предупреждениями.Что может быть не так с MSA?

Обновление 3: Проблема заключалась в том, как я добавлял MSA в пул приложений.Мне нужно было включить мой домен в имя пользователя: myDomain\someMsa$.Как только я это сделал, это сработало как шарм!

1 Ответ

0 голосов
/ 17 декабря 2018

Проблема была связана с отсутствием домена при установке MSA в качестве идентификатора пула приложений.При его добавлении мне нужно было установить myDomain\someMsa$ вместо someMsa$.Странно, что IIS не выдавал ошибку, возможно, потому что учетная запись MSA считалась локальной и доменной учетной записью.

Кроме того, в нашем случае нам не требовалось разрешение «Вход в систему как пакет» для MSA.Без него все работало нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...