カスタム ルート ハンドラにルートを登録する次のコードがあります。
routes.Add(New Route(path & "/{assembly}/{*resource}", New RouteValueDictionary(), New RouteValueDictionary(New With { _
Key .assembly = AssemblyName _
}), New EmbeddedContentRouteHandler(PluginAssembly, AssemblyName & "." & path)))
これにより、コンパイル済みの DLL に埋め込まれたリソースにアクセスできます。たとえば、次のようになります。
MVC 3 および 4 では、ProcessRequest 関数は毎回起動しますが、MVC 5 からは起動しません。ディレクトリを指定した場合にのみ起動します。ディレクトリではなくファイルを探しているため、明らかにヌル参照例外が発生します ( 、明らかに、ファイルのように . によって)
.css と .js を除外して、カスタム ルート ハンドラが起動するかどうかを試してみましたが、何もありません。MVC 4 プロジェクトでこれをテストすると、完全に機能します。
私の髪を引き裂き始めます。
MVC 5 では RouteHandler が起動しないのに、MVC 4 および 3 では起動する理由はありますか?
(これは MEF を使用した Pluggable MVC プロジェクトであり、アップグレード パスがうまく機能しなかったため、MVC 5 に 1 つずつ導入しました)