今日、私は非常に奇妙な問題と戦ってきました。以前はASP.NET4であったASP.NETMVC3Webアプリケーションの開発に日々を費やしていますが、現在はMVC3の半分とASP.NET4の半分がすべて同じアプリケーションで実行されているわけではありません。これはすべて問題ありません。
本日、新しいステージング環境(Server 2008 R2)をセットアップし、コードをデプロイしてアプリを実行しました。MVCページにアクセスしようとしたときにHTTP404エラーが発生する場合にのみ、すべてのaspxページが正常に機能しました。問題が環境問題であることを証明するために、同じコードを開発ボックスの新しいアプリケーションにデプロイしましたが、これは問題なく機能しました。
両方の環境(IISロールサービス、Windows Update、インストール済みアプリケーションなど)がまったく同じであることを確認するために一日を費やした後、404エラーページでリクエストのハンドラーが「StaticFile」であることに気付きました。
少しグーグルした後、私はタイトルのオプションに出くわしました
<system.webServer><modules runAllManagedModulesForAllRequests="true"></modules></system.webServer>
これは現在機能しているので、静的ルートなしで使用されるモジュールは、静的ルートなしでは呼び出されないと思います(私がナイーブである場合は許してください)。
問題は、私たちの開発環境では、web.configにこの属性がないということです。
では、なぜそれがなくても、あるサーバーでは機能し、別のサーバーでは機能しないのでしょうか。確かに、すべての要求に対してすべてのモジュールを呼び出すことは効率が悪くなります。
なぜこれが起こるのかについて誰かが何か考えを持っているなら、私は永遠に感謝するでしょう。私たちのステージング環境は現在機能していますが、私はあなたのことを正確に知らないのが嫌いです。
ありがとう!