在IIS服务器上部署ASP.NET Core 2.1 React App

时间:2018-07-03 07:23:03

标签: asp.net reactjs iis asp.net-core

我正在尝试在本地IIS系统上托管默认的React Application。

配置如下

  • Visual Studio 2017
  • IIS 10
  • 64位操作系统
  • ASP.NET CORE 2.1

我已经安装了先决条件,即asp.net core 2.1托管捆绑包和运行时。

当我发布应用程序时,其目录如下

enter image description here

我进行的托管配置:

  • 使用无托管代码
  • 创建了一个新的应用程序池
  • 使用此池托管网站

但是当我在浏览器上运行该应用程序时,它显示404错误,没有找到该应用程序。

但是,通过ASP.NET CORE 2.0,它可以使用相同的配置。

此ASP.NET CORE 2.1删除了对此类应用程序的支持吗?

我参加过所有可能的论坛,但没有一个论坛提到如何使用React-Redux模板托管2.1应用程序。

请帮助

3 个答案:

答案 0 :(得分:1)

我认为我找到了问题。 这是HTTP启用配置附带的ASP.NET CORE 2.1默认项目。

当我将其托管在IIS服务器上时,它会将其重定向到https url,但未为IIS协议配置IIS。

出于我的需要,我从StartUp.cs文件的Configure方法中删除了HTTPS重定向

已删除 app.UseHttpsRedirection()

它现在正在重定向到HTTP

答案 1 :(得分:1)

我遇到了类似的问题,这与同时发布两个项目有关。这对我有用:

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

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

答案 2 :(得分:0)

这对我有用。

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

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解决方案的目录,因此请相应地进行更改。

否,您不需要或不想删除构建文件夹,而必须在服务器上执行该操作。