アプリケーションでIISのサイトにあるレスポンスSPAを使用して拡張/置換されているIISでホストされている既存のASP.Net MVCがあります。サブアドレスを保持しているIISのURLリダイレクトSPA
これは、ビジネス上の理由からテナントにすることができず、既存のシステムがWebフォームであり、そのビルドされたシステムがどのようにSPAをサブアプリケーションは新しい機能を配備する最も簡単な方法であると判断されました。別のMVCプロジェクトを望んでいなかったり、合意しなければならない他のクライアント関連のカスタマイズのためにWebApiプロジェクトを静的ページに提供したりしませんでした。
SPAは、それ自体が反応アプリケーションの下にあるアプリケーションである新しいWebApiバックエンドと通信します。それはこのようになりますvisulise支援するため
:
今、このすべての作品、SPAは、単に通常のhrefとWEBAPIバックエンドに喜んSPA会談で、親アプリからロードすることができます。
私がレンガの壁にぶつかったのは、ユーザーがSPAでF5キーを押してIISがSPA index.htmlを返し、クライアント側のルーティング(反応ルータv4)を返すようにIIS Url書き換えルールを並べ替えることです正しいコンポーネントのレンダリングを処理します。
url書き換えルールは、v5アプリケーションで定義されています。
私はthis oneとthis oneのような質問のアドバイスに従いました。反応するSPAがサイトのルートにある場合、それは完全に機能しますが、サブアプリケーションに移動するとすぐに404応答完全なURLが見つからないことを示す例URLを要求するときlocalhost/v5/documents
IISは存在しないv5/documentsファイル/ディレクトリを見つけようとします。
既存のシステムを外してみると、トップレベルのサイトにコンテンツがなく、反応サイトがv5アプリケーションにあり、apapフォルダ内のwebapiにある新しいフォルダにサイトが展開されていますすべて働いている。
私はいくつかのパターンを試してみましたが、現在使用しているパターンは.*/v5/?.*
です。IISマネージャーのテストパターン機能が、私の期待するURLと一致すると教えてくれます。 localhost/v5/documents
のURLは一致する必要がありますが、実際には決してありません。
私が見つけたthis link about configuring angularとthisルールを作成することに触れているが、運がないリック・ストラールのポスト。
現時点で私が使用している完全な設定は、私はまた、失敗した要求トレースをインストールしているが、私は、ログを見たとき、私はURL書き換えを要求するために解雇されて表示されていない
<rewrite>
<rules>
<rule name="Rewrite Text Requests" enabled="true" stopProcessing="true">
<match url=".*/v5/?.*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_URI}" pattern="/api(.*)$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{HTTP_HOST}/v5/index.html" logRewrittenUrl="false" />
</rule>
</rules>
</rewrite>
ですそのため、存在しないファイル/ディレクトリを見つけようとしています。
私が作成-反応するアプリで作成したサイト(私は生産ビルドではないwebpackdevserverを使用してテストしていますが反応し、私は窓10にIIS 10.0.15063.0を使用していhere
を記録失敗した要求トレースをアップロードしました)、WebApiプロジェクトは.Net Framework 4です。7
モジュールの順番を確認しましたか? URLを書き換える前に静的ファイルを実行していますか? – dez
モジュールは正しい順序であり、書き換えルールがあった場所と一致するようにしようとしていました。 – Nathan