だから私の環境は C# asp.net sitefinity webforms/mvc/webapi ハイブリッドです。Amazon elb の背後にある IIS 7 にアプリケーション プールがあります。
IIS に foo.com というサイトがあります。bar というアプリケーションを foo.com に追加しました。したがって、私の他のサイトには foo.com/bar からアクセスできます。
これら 2 つのサイトは正常に動作します (ほとんどの場合)。しかし、foo.com/bar/* に属する同じ URL にアクセスすると、404 エラーが発生することがあります。ブラウザーのアドレス バーで Enter キーを押すと、再び表示されます。404 を複製するのは難しく、ページをレンダリングするときもあれば、404 を取得するときもあります。
問題は、取得した 404 ページが foo.com/bar ではなく foo.com からのものであることです。
そのため、foo.com/bar が URL を解決するのではなく、foo.com が URL を解決しようとしているように見えることがあります。
elb に着信する https トラフィックが http としてアプリケーションに送信されることに気付きました。elb は何かおかしなことをすることがありますが、そうでないこともありますか?
とにかく、トラブルシューティングを行うために、foo.com のアプリケーションで foo.com/bar へのすべての URL リクエストを無視するようにしたいので、それでも 404 が発生する場合は、少なくともサブ アプリケーション (foo.com/bar) から 404 ページが必要です。
だから私はこのルールをfoo.com web.configに追加することを考えています
<rule name="Ignore bar" stopProcessing="true">
<match url="^.*foo.com/bar/.*" />
<action type="None" />
</rule>
しかし、私はアクションが何をするのか分かりません。なしは何をしますか?私の意図は、正規表現が一致した場合、foo.comにURLを無視させ、foo.com/barにURLを取得させることです。
foo.com/bar はテスト モードですが、foo.com はライブ サイトなので、何も壊したくありません。
ところで、開発環境またはステージング環境 (IIS アプリケーションがライブと同じ形式でセットアップされている) で foo.com/bar/* に 404 を取得しません。
主な違いは Amazon 環境のようですが、間違っている可能性があります。
それで、私のルールは機能しますか?それとももっと良い方法がありますか?
編集:これが関連しているかどうかはわかりませんが、私のAmazonインスタンスでsitefintyはいくつかのHTTP PUTエラーを示しています(私が推測するelbが私のサブアプリケーション(foo.com/bar)に何かをPUTしようとしているとき、エラータイムアウトです)。
編集 2: https で (foo.com/bar への) WebApi メソッドへの Get 呼び出しを試行すると、常に foo.com から 404 が返されます。しかし、http で同じ URL を使用すると、期待どおりのデータが得られます。これは一貫して再現可能であるようです。