5

Ho un problema con la configurazione di asp.net mvc applicazione:Razor vista Tipo non eredita da 'System.Web.WebPages.WebPage'

[HttpException (0x80004005): Type 'ASP._Page_Currency_Index_cshtml' does not inherit from 'System.Web.WebPages.WebPage'.] 
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +11454171 
System.Web.WebPages.BuildManagerWrapper.CreateInstanceOfType(String virtualPath) +347 
System.Web.WebPages.VirtualPathFactoryManager.CreateInstanceOfType(String virtualPath) +239 
System.Web.WebPages.WebPageHttpHandler.CreateFromVirtualPath(String virtualPath, IVirtualPathFactory virtualPathFactory) +57 
System.Web.WebPages.WebPageRoute.DoPostResolveRequestCache(HttpContextBase context) +407 
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270 

passaggi che voglio fare:

  • Sposta i controller con le relative viste in una libreria separata e inserisci la DLL nella cartella bin.
  • Creare provider di file virtuale e file virtuale per ottenere i dati dal montaggio:

    public override Stream Open() 
    { 
        var resourceName = this.path; 
        var asmName = this.assembly.GetName().Name; 
        var manifestName = asmName + ".Views" + resourceName.Trim('~').Replace("/", "."); 
        var resourceStream = this.assembly.GetManifestResourceStream(manifestName); 
        return resourceStream; 
    } 
    
  • aggiungere questo righe in web.config:

    <configSections> 
        <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
        <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
        </sectionGroup> 
    </configSections> 
    <system.web.webPages.razor> 
        <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
        <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
        <namespaces> 
         <add namespace="System.Web.Helpers" /> 
         <add namespace="System.Web.Mvc" /> 
         <add namespace="System.Web.Mvc.Ajax" /> 
         <add namespace="System.Web.Mvc.Html" /> 
         <add namespace="System.Web.Routing" /> 
         <add namespace="System.Web.WebPages" /> 
        </namespaces> 
        </pages> 
    </system.web.webPages.razor> 
    
  • Quando l'accesso degli utenti pagina di questo controller viene compilato correttamente nella seguente classe:

    public class _Page_Currency_Index_cshtml : System.Web.Mvc.WebViewPage<GridModel<CurrencyModel>> { 
    
  • E dopo che non riesce con questo errore (e come posso vedere -. Ha ragione, tipo 'ASP._Page_Currency_Index_cshtml' non eredita da 'System.Web.WebPages.WebPage')

Che cosa dovrebbe Faccio sapere a HttpApplication che questa pagina deve essere gestita come System.Web.Mvc.WebViewPage anziché System.Web.WebPages.WebPage?

Ho provato a spostare Views/Web.Config nella cartella bin, ma non aiuta.

risposta

4

Prova ad aggiungere questo al AppSettings in Web.Config:

<add key="webpages:Enabled" value="false" /> 
+0

ero alla ricerca di questo. Grazie ha funzionato – mzain

Problemi correlati