在 IIS 服务器上部署 ASP.NET Core 2.1 React 应用程序

7
我正在尝试在本地IIS系统上托管默认的React应用程序。
配置如下:
- Visual Studio 2017 - IIS 10 - 64位操作系统 - ASP.NET CORE 2.1
我已经安装了前提条件,即asp.net core 2.1托管包和运行时。
当我发布应用程序时,它的目录如下所示:
(见图片)
我做的主机配置是:
- 创建一个新的应用程序池,使用“无托管代码” - 使用此池来托管网站
但是,当我在浏览器上运行应用程序时,它显示404错误,找不到应用程序。
然而,在ASP.NET CORE 2.0中,使用相同的配置可以工作。
这个ASP.NET CORE 2.1是否删除了对这些应用程序的支持?
我已经查看了所有可能的论坛,但没有一个论坛提到如何使用React-Redux模板托管2.1应用程序。
请帮忙。

  1. 启用日志记录并检查请求是否实际命中您的应用程序;
  2. 尝试直接在该路径下使用 dotnet myapp.dll 运行应用程序(而不是通过 IIS);
  3. 检查 IIS 问题的事件日志;
  4. 查看文档
- poke
@poke,可以了。如果我直接运行应用程序(不通过IIS),那就完美了。 - user10005648
3个回答

2

我曾经遇到过类似的问题,与同时发布两个项目有关。以下是解决方法:

  1. 将ASP.Net Core应用程序发布到本地文件夹
  2. 删除ClientApp中的构建文件夹
  3. 压缩已发布的文件夹并将其复制到IIS服务器上的目标位置
  4. 在服务器上解压项目
  5. 从Client App文件夹内运行命令npm run build

附注: 确保在IIS中将该项目标记为应用程序 如有需要,请为该项目启用目录浏览 如果package.json不在IIS服务器的根目录中,请确保设置了homepage


请确保您首先使用“npm i”安装npm包。 - Miro J.

2
我想我找到了问题所在。它涉及ASP.NET CORE 2.1默认项目附带的https启用配置。
当我在IIS服务器上托管它时,它会将其重定向到https url,但是IIS未配置IIS协议。
根据我的需求,我从StartUp.cs文件的Configure方法中移除了HTTPS重定向。

已删除: app.UseHttpsRedirection()

现在它已成功重定向到HTTP。

2
这个对我有用。
  1. 这是一个2008年的Windows服务器——不太理想,但将应用程序池设置为非托管代码
  2. 我在2.2应用程序中使用React 16.8。
  3. 切换到具有生产设置的发布版本——发布
  4. 更改package.json,使主页指向正确的位置
  5. 向ClientApp/build文件夹添加一个web.config文件以进行重写模块

在build文件夹中的web.config如下所示

<configuration>
<system.webServer>
<rewrite>
    <rules>
    <rule name="React Routes" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/dynamotoolsapi" />
    </rule>
    </rules>
</rewrite>
</system.webServer>
</configuration>

/dynamotoolsapi是整个.net解决方案的目录,因此请相应更改您的目录。

不,您不需要或者想要删除构建文件夹,并且无需在服务器上执行此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接