Как устранить ошибку HTTP 403.14 - запрещено в Asp. Net Core API? - PullRequest
3 голосов
/ 10 июля 2020

Я разрабатываю 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 для конфигурации.

Итак, у меня есть три вопроса.

  1. Что такое root причина проблемы, я упомянул этот вопрос , но я понятия не имел, почему мы получаем эту ошибку?
  2. Как мы можем решить проблему более простым и понятным способом?
  3. если это действительно необходимо изменить 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

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Возможно, проблема связана с настройкой переменной «ASPNETCORE_ENVIRONMENT». Мы должны предоставить эту информацию в IIS.

Фактически вы можете установить ее на веб-сайте в IIS.

  • Откройте «Inte rnet Information Services (IIS) Manager.

  • Go на веб-сайт, на котором вы хотите установить переменную среды. Найдите «Редактор конфигурации».

  • В Часть «Раздел» редактора конфигурации, выберите system.webServer/aspNetCore в левом раскрывающемся списке и выберите ApplicationHost.config.

  • Нажмите environmentVariables, и вы получите текущую переменную env. Добавьте новую env переменная.

  • name будет ASPNETCORE_ENVIRONMENT и value будет Development [staging / Prod].

  • Закройте окно и перезапустите веб-сайт.

Попробуйте с вышеуказанным. Удачного кодирования !!

0 голосов
/ 20 июля 2020

Проблема решена обновлением Visual Studio до версии 16.6.4.

0 голосов
/ 20 июля 2020

%Launcher_PATH% и %LAUNCHER_ARGS% должны быть заменены во время процесса publi sh.

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">

Пожалуйста, посмотрите этот ответ, чтобы получить более подробную информацию

...