簡體   English   中英

如何解決 HTTP Error 403.14 - Forbidden in Asp.Net Core API?

[英]How to solve the HTTP Error 403.14 - Forbidden in Asp.Net Core API?

我正在開發 Asp.Net Core 3.1 API。它運行良好,我正在 IIS 上部署它,它給了我以下錯誤。

HTTP 錯誤 403.14 - 禁止訪問

我已經找到了問題的根本原因,我將我的觀察放在下面。

這是我原來的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>

因此,當我在發布解決方案配置中發布應用程序時,它會生成具有最新更改的 web.config。 當我使用 IIS 中的此發布文件夾部署 API 並運行該應用程序時,它會出現403.14錯誤。

為了解決這個問題,我手動將舊的 web.config 內容復制到 IIS 虛擬目錄 web.config。 並且我能夠成功運行該應用程序。

所以從中學習是,如果我們對 web.config 進行任何更改,我們需要以不同的方式處理它,但我建議不要對 web.config 進行任何更改,而是使用 appsettings.json 進行配置。

所以我在這里有三個問題。

  1. 這個問題的根本原因是什么,我已經提到了這個問題,但不知道為什么我們會收到這個錯誤?
  2. 我們怎樣才能以一種更干凈、更簡單的方式解決這個問題?
  3. 如果真的需要修改web.config,我們如何才能干凈利落地修改呢?

更新:

正如@ScareCrow 在他的回答中所建議的那樣,我已經進行了必要的更改,並且開始出現以下錯誤。

HTTP 錯誤 500.0 - ANCM 進程內處理程序加載失敗

事件查看器日志:

日志名稱:應用程序來源:IIS AspNetCore Module V2 日期:7/15/2020 3:29:03 AM 事件 ID:1031 任務類別:無級別:錯誤關鍵字:經典用戶:N/A 計算機: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”中找不到可執行文件進程 ID:19916。文件版本:13.1.20142.5。 描述:IIS ASP.NET 核心模塊 V2。 提交:844a82e37cae48af2ab2ee4f39b41283e6bb4f0e

也許問題與“AS.NETCORE_ENVIRONMENT”變量設置有關。 我們必須在 IIS 中提供此信息。

其實可以在IIS的網站上設置。

  • 打開“Inte.net 信息服務 (IIS) 管理器。

  • Go 到你要設置環境變量的網址。 找到“配置編輯器”。

  • 在配置編輯器的“部分”部分,左側下拉列表中的 select system.webServer/aspNetCore select ApplicationHost.config

  • 單擊environmentVariables然后您將獲得當前環境變量。 添加一個新的環境變量。

  • name將為AS.NETCORE_ENVIRONMENTvalue將為Development [staging/Prod]。

  • 關閉window,重啟網站。

試試上面的方法。 快樂編碼!

必須在發布過程中替換%Launcher_PATH%%LAUNCHER_ARGS%

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

請查看答案以獲取更多詳細信息

我正在開發 Asp.Net Core 3.1 API。 它運行良好,我將它部署在 IIS 上,它給了我以下錯誤。

HTTP 錯誤 403.14 - 禁止

我已經找到了問題的根本原因,我將我的觀察結果放在下面。

這是我原來的 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>

因此,當我在發布解決方案配置中發布應用程序時,它會生成具有最新更改的 web.config。 當我使用 IIS 中的此發布文件夾部署 API 並運行應用程序時,它會給出403.14錯誤。

為了解決這個問題,我手動將舊的 web.config 內容復制到 IIS 虛擬目錄 web.config。 並且我能夠成功運行該應用程序。

所以從中學到的是,如果我們對 web.config 進行任何更改,我們需要以不同的方式處理它,但我建議不要在 web.config 中進行任何更改,而是使用 appsettings.Z466DEEC76ECDF25FCA6D3855ZZ 進行配置71F6

所以我在這里有三個問題。

  1. 問題的根本原因是什么,我已經提到了這個問題,但不知道為什么會出現這個錯誤?
  2. 我們如何以更清潔和簡單的方式解決問題?
  3. 如果確實需要修改 web.config,我們如何才能干凈利落地呢?

更新:

正如@ScareCrow 在他的回答中所建議的那樣,我已經進行了必要的更改,並且我已經開始收到以下錯誤。

HTTP 錯誤 500.0 - ANCM 進程內處理程序加載失敗

事件查看器日志:

日志名稱:應用程序源:IIS AspNetCore Module V2 日期:2020 年 7 月 15 日凌晨 3:29:03 事件 ID:1031 任務類別:無級別:錯誤關鍵字:經典用戶:N/A 計算機:SUSIAALGCBWSXT1.FCStone.Z4D236D9A2D102C5FE6AD1C5DA4Z 描述: 應用程序 '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”中找不到可執行文件進程 ID:19916。文件版本:13.1.20142.5。 說明: IIS ASP.NET 核心模塊V2。 提交:844a82e37cae48af2ab2ee4f39b41283e6bb4f0e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM