ASP .NET VirtualPathProvider HttpCompileException - PullRequest
       17

ASP .NET VirtualPathProvider HttpCompileException

3 голосов
/ 06 сентября 2010

У меня есть VirtualPathProvider, который загружает содержимое моего файла aspx из БД.Кажется, все хорошо, за исключением случаев, когда в моем файле 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?)

Несмотря на то, что на моей странице 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 (поддельное имя), страница сорвется, пытаясь загрузить сборку.

Если я полностью удаляю директиву сборки со страницы, то яполучить пространство имен. Тип или имя пространства имен 'MyApp' не может быть найдено ... поэтому наличие там директивы ассемблера, кажется, немного помогает ...

Есть идеи, что мне здесь не хватает?Спасибо.

1 Ответ

0 голосов
/ 23 ноября 2011

Возможный дубликат .NET VirtualPathProviders и прекомпиляции

If a Web site is precompiled for deployment, content provided by a VirtualPathProvider
instance is not compiled, and no VirtualPathProvider instances are used by the precompiled 
site.
...