DB から aspx ファイルのコンテンツをロードしている VirtualPathProvider があります。私のaspxファイルが私のweb.configで明示的に言及されていない名前空間またはアセンブリへの参照を持っている場合を除いて、すべてがうまくいっているようです。
解決策は簡単そうですよね?アセンブリとインポート ディレクティブをページに追加します...しかし、それはうまくいかないようです。私はまだ次の HttpCompileException を取得します。
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET
Files\app.server\70480a40\2a773b44\App_Web_test.aspx.e7cf0b6b.mzeindht.0.cs(183): error CS0234:
The type or namespace name 'Model' does not exist in the namespace 'MyApp.Data' (are you missing an assembly reference?)
それでも、DBに保存されたtest.aspxページには次のものがあります。
<%@ Assembly Name="MyApp.Data" %>
<%@ Import Namespace="MyApp.Data" %>
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyApp.Data.Model.TestModel>" %>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
</asp:Content>
ここで、MyApp.Data が既に AppDomain に読み込まれていることを既に知っており (実行時に AppDomain.CurrentDomain.GetAssemblies() をチェックして確認しました)、MyApp.Data アセンブリを読み込む要求が失敗していないこともわかっています(私は AppDomain.ResolveAssembly イベントにバインドしており、例外が発生する直前に発生していないため)。また、アセンブリ ディレクトリの名前を MyApp.Data123 (偽の名前) に変更すると、アセンブリをロードしようとしてページが爆発します。
ページからアセンブリ ディレクティブを完全に削除すると、名前空間 The type or namespace name 'MyApp' could not be found... が得られます。
ここで何が欠けているか分かりますか?ありがとう。