Я разрабатываю Asp. Net Core 3.1 API. Он работает нормально, и я развертываю его в IIS, и это дает мне следующую ошибку.
Ошибка HTTP 403.14 - Запрещено
Я обнаружил причину root проблемы, я помещаю свое наблюдение ниже.
Это мой исходный файл web.config
<?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=".\EngageAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Поэтому, когда я запускаю проект локально с помощью Visual Studio 2019, он меняет содержимое web.config в указанное ниже.
<?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="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="COMPLUS_ForceENC" value="1" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Итак, когда я публикую sh приложение в конфигурации решения Release, оно генерирует web.config с последними изменениями. и когда я развертываю API с помощью этой папки publi sh в IIS и запускаю приложение, появляется ошибка 403.14
.
Чтобы исправить это, я вручную скопировал старый контент web.config в IIS виртуальный каталог web.config. и я могу успешно запустить приложение.
Итак, уроки из этого заключаются в том, что нам нужно обрабатывать его по-другому, если мы вносим какие-либо изменения в web.config, но я бы предложил не вносить никаких изменений в web.config, вместо этого используйте appsettings. json для конфигурации.
Итак, у меня есть три вопроса.
- Что такое root причина проблемы, я упомянул этот вопрос , но я понятия не имел, почему мы получаем эту ошибку?
- Как мы можем решить проблему более простым и понятным способом?
- если это действительно необходимо изменить web.config, как мы можем сделать это чисто?
Обновление:
Как было предложено @ScareCrow в его ответ Я внес необходимые изменения и начал получать ошибку, указанную ниже.
Ошибка HTTP 500.0 - Ошибка загрузки внутрипроцессного обработчика ANCM
Средство просмотра событий журналы:
Имя журнала: Источник приложения: IIS AspN Модуль etCore V2 Дата: 15.07.2020 3:29:03 Код события: 1031 Категория задачи: Нет Уровень: Ключевые слова ошибки: Classi c Пользователь: Н / Д Компьютер: SUSIAALGCBWSXT1.FCStone.com Описание: Приложение 'D : \ Octopus \ Applications \ Beta \ ISOXMLValidationApi \ 1.0.0.9 'не удалось запустить. Сообщение об исключении: исполняемый файл не найден в 'D: \ Octopus \ Applications \ Beta \ ISOXMLValidationApi \ 1.0.0.9% LAUNCHER_PATH% .exe' Событие Xml: 1031 2 0 0x80000000000000 1090650 Приложение SUSIAALGCBWSXT1.FCStone.com Не удалось запустить приложение D: \ Octopus \ Applications \ Beta \ ISOXMLValidationApi \ 1.0.0.9. Сообщение об исключении: исполняемый файл не найден в 'D: \ Octopus \ Applications \ Beta \ ISOXMLValidationApi \ 1.0.0.9% LAUNCHER_PATH% .exe' Идентификатор процесса: 19916. Версия файла: 13.1.20142.5. Описание: IIS ASP. NET Core Module V2. Фиксация: 844a82e37cae48af2ab2ee4f39b41283e6bb4f0e