У меня есть новый .NET Core API, который нацелен на полную инфраструктуру .Net, поэтому размещается вне процесса в IIS. Это отлично работает локально в Visual Studio, а также хорошо работает в тестовой среде с использованием IIS, однако при развертывании в рабочей среде это не работает. Разница, которую я вижу, заключается в том, что в тестовой среде есть локальный диск с файлами API, а для рабочих файлов API задан путь UNC в IIS, пул приложений работает как пользователь домена, имеющий полный доступ к сетевой папке. API не запускается с ошибками, сообщения о которых показаны ниже из журнала событий, включая сбой записи в журналы stdout. Однако, если я настрою пул приложений для работы в качестве учетной записи администратора домена, все будет хорошо, и API запустится. Конечно, я не могу работать от имени этого пользователя, поэтому мой вопрос в том, какие разрешения или уровни доверия мне здесь не хватает. Я новичок в .NET Core, поэтому не уверен, какие дополнительные разрешения могут потребоваться. Другие полные веб-сайты и службы .NET Framework нормально работают на этом сервере со своими файлами на этом сетевом диске.
Вот сообщения журнала событий при запуске пула приложений в качестве пользователя домена, не являющегося администратором.
Application EventLog для источника: «IIS AspNetCore Module V2» Предупреждение: «Не удалось создать stdoutLogFile \?\UNC\fileclstr\Websites\WebsiteName\API\logs\stdout_20191205204322_15236.log, ErrorCode = '0x800700a1'».
Журнал событий приложения для источника: Ошибка выполнения .NET: «Приложение: DistributedServices.WebsiteName.exe Версия платформы: v4.0.30319 Описание: Процесс был прерван из-за необработанного исключения. Информация об исключении: System.Net.Sockets.SocketException в System.Net .Sockets.Socket..ctor(System.Net.Sockets.AddressFamily, System.Net.Sockets.SocketType, System.Net.Sockets.ProtocolType) в Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransport.BindAsync() в Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer+‹>c__DisplayClass21_01+<<StartAsync>g__OnBind|0>d[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder+<BindEndpointAsync>d__3.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions+<BindAsync>d__43.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder+AddressesStrategy+<BindAsync>d__2.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder+<BindAsync>d__0.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer+<StartAsync>d__21
1[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] .MoveNext() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) в Microsoft.AspNetCore.Hosting.Intern al.WebHost+d__26.MoveNext() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) в Microsoft. AspNetCore.Hosting.WebHostExtensions+d__5.MoveNext() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) в Microsoft.AspNetCore.Hosting.WebHostExtensions+d__4.MoveNext() в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task ) в Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(Microsoft.AspNetCore.Hosting.IWebHost) в DistributedServices.WebsiteName.Program.Main(System.String[])"
Журнал событий приложения для источника: «Ошибка приложения» Ошибка: «Имя сбойного приложения: DistributedServices.WebsiteName.exe, версия: 1.0.0.0, отметка времени: 0xf4041a68 Имя сбойного модуля: KERNELBASE.dll, версия: 10.0.14393.3321, отметка времени: 0x5da7e8d8 Код исключения: 0xe0434352 Смещение ошибки: 0x000dc232 Идентификатор сбойного процесса: 0x2bf8 Время запуска сбойного приложения: 0x01d5abaca2aaaf51 Путь сбойного приложения: \fileclstr\Websites\WebsiteName\API\DistributedServices.WebsiteName.exe Путь сбойного модуля: C:\Windows\System32\KERNELBASE. dll Идентификатор отчета: c68c4bdd-e46d-4628-8be3-63b1f6cc78dc Полное имя сбойного пакета: Идентификатор сбойного связанного с пакетом приложения: "
Источник журнала событий приложения: «IIS AspNetCore Module V2» Предупреждение: «Приложению '/LM/W3SVC/1/ROOT/api' с физическим корнем '\fileclstr\Websites\WebsiteName\API\' не удалось запустить процесс с командной строкой '\fileclstr\ Websites\WebsiteName\API\DistributedServices.WebsiteName.exe ' на этапе 'PostStartCheck', ErrorCode = '0x8027025b', назначенный порт 38520, retryCounter '1'."
Вот web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough">
<clear />
</httpErrors>
<aspNetCore processPath=".\DistributedServices.WebSiteName.exe" arguments="" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
Заранее благодарим вас за любые предложения.
Asp.net Core 2.2, пустельга вне процесса, IIS10, Windows Server 2016.