【问题标题】:How to deploy ASP.NET Core / React app with authorization to IIS?如何使用 IIS 授权部署 ASP.NET Core / React 应用程序?
【发布时间】:2020-10-09 03:22:13
【问题描述】:

部署带有身份验证的 ASP.NET Core 3.0 / React 应用程序到客户端的 IIS Web 服务器并收到 HTTP 错误 500.0 - ANCM In-Process Handler Load Failure 错误。如何正确部署此应用?

我没有足够的声望点来发布超过 8 个链接,因此我不得不删除我在解决此问题时使用的帖子和文档的链接。

我对 ASP.NET Core、IIS、证书和部署完全陌生,因此我不确定如何正确部署此应用程序。我可能没有正确实施证书设置,但我不确定这是否是实际问题。

这是我的过程:

我使用以下方法创建了应用程序:

$ dotnet new react -o output_directory_name -au 个人

按照 Microsoft 文档中的说明进行操作。

我将项目从 Visual Studio 发布到本地文件夹。这是web.config file。客户已经创建了一个网站,所以我将发布的文件复制到了网站的文件夹中。

使用 youtube 视频和 SO 上的另一篇文章,我尝试设置网站的证书要求。我认为我没有正确设置它们。

这里有一些屏幕截图来说明项目和网站的设置方式。我用红色的虚拟值替换了敏感值,并尝试在一个值出现多次时保持一致。

appsettings.json 文件。我已经根据其他帖子和文档尝试了许多“Key”条目。不完全确定我应该为“名称”输入什么值。我还尝试将“密钥”设置为另一个 SO 帖子中提到的文件。

我正在尝试部署的website 和服务器证书。

客户已为网站提供set 证书。

Details 的证书。

SSL settings 用于该网站。这是我第一次尝试部署时的设置。在尝试运行应用程序时,我检查了 Require SSL 并尝试了各种客户端证书选项。

AspNetCoreModuleV2 主机包已安装。

Application pool 应用设置。

我已经转了好几天了,非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 据我所知,HTTP 错误 500.0 - ANCM In-Process Handler Load Failure 错误通常意味着您没有安装或服务器不支持 asp.net 核心。据我所知,从现在开始,asp.net core 3.0 也可以使用asp.net core 2.2 来运行应用程序了。配置文件还使用 asp.net core 2.2 来运行 asp.net core 3.0 应用程序。我建议您可以尝试从link 安装 asp.net core 2.2 并重试。
  • @BrandoZhang 感谢您的回复。 asp.net core 2.2 托管包确实是安装在服务器上的。服务器是 Windows Web Server 2008 R2,根据 Microsoft 文档,它是 compatible。 web.config 文件也引用了 2.2 安装 (modules="AspNetCoreModuleV2")
  • 能否请您发布有关您之前的客户申请的更多详细信息?我建议您可以尝试创建一个新的 IIS 网站并将 asp.net 核心应用程序发布的文件复制到该应用程序以再次测试。我猜这个问题可能与您之前的客户端应用程序设置有关。

标签: reactjs authentication asp.net-core iis web-deployment


【解决方案1】:

使用事件查看器(希望我早点了解这一点)我能够在应用程序启动时找到并查看错误。这让我有点抓狂,导致将所有 Micorsoft 软件包更新到 3.0 Preview 8 版本(并等待客户端更新托管捆绑包)。引用 appsettings 中的密钥时也出现错误。我认为格式化可能已经关闭,因为我将它通过 json 格式化程序然后它工作了。

【讨论】:

    【解决方案2】:
    1. 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=".\MyApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
       </system.webServer>
      
    2. 构建你的应用程序

    3. 将您的应用程序发布到某个文件夹

    4. 创建一个网站,它会自动将 ppol 添加到应用程序池WebsiteCreation

    5. 编辑应用程序池,将 .net 版本修改为无托管代码 edit pool edit version

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多