web-dev-qa-db-ja.com

ASP.NET Core 2.1の展開React App on IIS server

デフォルトをホストしようとしていますReactローカルのアプリケーションIISシステム。

構成は次のとおりです

  • ビジュアルスタジオ2017
  • IIS 10
  • 64ビットオペレーティングシステム
  • ASP.NET CORE 2.1

前提条件、つまりasp.net core 2.1ホスティングバンドルとランタイムをインストールしました。

私がアプリケーションを公開したとき、そのディレクトリは次のとおりです

enter image description here

そして私が作ったホスティング構成:

  • マネージコードなしで新しいアプリケーションプールを作成しました
  • このプールを使用してWebサイトをホストしました

しかし、ブラウザでアプリケーションを実行すると、404エラーが表示され、アプリケーションが見つかりません。

ただし、ASP.NET CORE 2.0では、同じ構成で動作します。

このASP.NET CORE 2.1は、そのようなアプリケーションのサポートを削除しましたか?

私は考えられるすべてのフォーラムを通過しましたが、どのフォーラムも、React-Reduxテンプレートを使用して2.1アプリケーションをホストする方法について言及していません。

助けてください

7
user10005648

問題を見つけたと思います。これは、ASP.NET CORE 2.1のデフォルトプロジェクトに付属するhttps enable構成です。

IISサーバーでホストしたとき、httpsのURLにリダイレクトされていましたが、IISがIISプロトコル用に構成されていませんでした。

私のニーズのために、StartUp.csファイルのConfigureメソッドからHTTPSリダイレクトを削除しました

削除済みapp.UseHttpsRedirection()

現在はHTTPにリダイレクトされていました

1
user10005648

これでうまくいきました。

  1. その2008 Windowsサーバー-理想的ではありませんが、アプリケーションプールをアンマネージコードに設定します
  2. 2.2アプリケーション内にReact 16.8があります。
  3. 本番環境設定でリリースビルドに切り替える-Publish
  4. ホームページが適切な場所を指すようにpackage.jsonを変更します
  5. 書き換えモジュールのClientApp/buildフォルダーにweb.configファイルを追加します。

ビルドフォルダーにある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ソリューション全体のディレクトリなので、それに応じて変更します。

いいえ、ビルドフォルダーを削除する必要はありません。サーバーで削除する必要はありません。

1
Tom Stickel