リバースプロキシ404の背後にあるBlazorサーバー側


10

(ARRを使用して)リバースプロキシの背後にあるIISでホストされているblazorサーバー側アプリがあります。

私は思いつく限りのことをすべて試しましたが、404を使い続けています

_framework / blazor.server.js

私のベースhrefは "/ subsite /"に設定されています:

<base href="https://stackoverflow.com/subsite/" />

そして私のすべてのsrc値は次のように相対的です:

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

他のすべてのスクリプト参照は正常にロードされ、_contentデータであってもblazor.server.jsはロードされません。

MVCアプリでも古いPathBaseトリックを試しましたが、成功しませんでした。

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

Blazorにblazor.server.jsをリバースプロキシシナリオのどこに配置するかを認識させる方法を誰かに教えてもらえますか?


1
blazor.server.jsは埋め込みリソースです。ファイルのコピーを取得して、他のjsファイルと同じように静的に提供することができます。しかし、それでも、サーバーとブラウザの間には多くのシグナルRチャタリングがあります。セットアップでどのように機能するかわかりません。
ラビ

うーん。コンポーネントが埋め込みリソースであり、_contentに住んでいるため、それが本当に理解されていませんが、それで問題ありません。私はそれをつかんで静的に提供しようとしますが、これは実際のバグのようです
つまり

どのリクエストパスが最終的にASP.NETで終わるかを確認するために利用できるログがありますか?
Henk Holterman、

回答:



-1

ドキュメントから。

正しいルーティングのためにURLを書き換える

Blazor WebAssemblyアプリでのページコンポーネントのリクエストのルーティングは、Blazor Serverのホスト型アプリでのリクエストのルーティングほど簡単ではありません。2つのコンポーネントを持つBlazor WebAssemblyアプリを考えてみましょう。

  • Main.razor –アプリのルートに読み込まれ、Aboutコンポーネントへのリンクが含まれます(href="About")。
  • About.razorAboutコンポーネント。

アプリのデフォルトドキュメントがブラウザのアドレスバーを使用してリクエストされた場合(例:)https://www.contoso.com/

  • ブラウザがリクエストを行います。
  • デフォルトのページが返されます。通常はindex.htmlです。
  • index.htmlはアプリをブートストラップします。
  • Blazorのルーターが読み込まれ、Razor Mainコンポーネントがレンダリングされます。

メインページでは、クライアント上のコンポーネントについて作品へのリンクを選択すると、Blazorルータは、インターネット上の要求を行ってからブラウザを停止するためwww.contoso.comのためにAboutとレンダリング機能Aboutコンポーネント自体を。Blazor WebAssemblyアプリ内の内部エンドポイントに対する要求はすべて同じように機能します。要求は、インターネット上のサーバーがホストするリソースへのブラウザーベースの要求をトリガーしません。ルーターは内部で要求を処理します。

のブラウザのアドレスバーを使用しwww.contoso.com/Aboutてリクエストを行うと、リクエストは失敗します。そのようなリソースはアプリのインターネットホストに存在しないため、404-Not Found応答が返されます。

ブラウザはクライアント側ページのインターネットベースのホストに要求を行うため、Webサーバーとホスティングサービスは、サーバー上に物理的に存在しないリソースに対するすべての要求をindex.htmlページに書き換える必要があります。ときにindex.htmlを返され、アプリのBlazorルータが引き継ぎ、正しいリソースで応答します。

IISサーバーにデプロイする場合、アプリの公開されたweb.configファイルでURL書き換えモジュールを使用できます。詳細については、IISのセクションを参照してください。


IISマネージャー->サーバーノード->アプリケーションリクエストルーティングキャッシュ->プロキシ->有効でフォワードプロキシを有効にしてみてください。

Webサイトが1つしかない場合は、そのWebサイトをARRサーバーファームに追加するだけで、ルーティングルールが自動的に作成されます。ヘルスチェックでバックエンドサーバーを監視すると便利です。

このARR警告は404の原因ですか?


ええと、私が知る限り、その記事はBlazor WebAssemblyを中心に展開しており、サーバー側を使用しています。さらに、IISは既にARRのフォワードプロキシ機能を使用しています(これが私のセットアップでリバースプロキシを実行している方法です)。
Dynde
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.