Я создал ASP. NET Core web API, который был протестирован на многих P C, но при развертывании на клиентском сервере IIS приложение не запускается и не выдает никаких ошибок, как отмечено в Журналы событий приложений. Запустив исполняемый файл напрямую, приложение работает, и вы можете перейти на веб-сайт ASP. NET Core. Я перешел к файлу web.config, чтобы найти dll для запуска:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MY_API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: c1c1b8d5-abcd-479f-9e7a-abcdefghijkl-->
выполняется dotnet MY_API.dll
производит следующее:
Порт не привязан ни к какому другому приложению, так как, когда я запускаю исполняемый файл, он успешно привязывается к порту, и я могу перейти к localhost: port, и отображается интерфейс api swagger. Команда dotnet
успешно запускает приложение в моей разработке P C.
Я могу подтвердить, что IIS работает на тех же модулях, что и на моем устройстве dev P C, и на том же. net Пакет хостинга во время выполнения установлен на сервере, как и на моем устройстве P C. Я чувствую, что это просто проблема с разрешениями, что политика безопасности, возможно, не позволяет мне связывать порты с помощью команды dotnet
, которую я прочитал, и именно это IIS использует для запуска приложения в фоновом режиме.
Мои знания об учетных записях служб и ApplicationPoolIdentities очень ограничены. Какие разрешения позволят приложению связать порт с помощью команды dotnet
, где запуск исполняемого файла позволяет мне связываться с портом? Как мне изменить эти разрешения?