2014-09-10 14 views
5

Utilizzo di Visual Studio 2013, ho migrato un'applicazione Web Asp.Net Webforms/MVC 3/Framework 4.0 ibrida in Asp.Net Webforms/MVC 5.2.2/Framework 4.5 .1.MethodAccessException in System.Web.WebPages migrazione mvc 3 in mvc 5

Ho seguito la procedura descritta in questi link:

http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/upgrading-signalr-1x-projects-to-20

Quando eseguo l'applicazione in Visual Studio ottengo questo errore:

Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed.

ho provato questi suggerimenti che ho trovato su StackOverflow, ma nessuno risolve il problema:

  1. chiara la cartella bin e ricostruire
  2. Installare Nuget Microsoft.Aspnet.WebHelpers pacchetto.
  3. Assicurarsi che tutti i riferimenti web.config di System.Web.Mvc e System.Web.WebPages puntino alla versione corretta (rispettivamente 5.2.2.0 e 3.0.0.0).

Qualsiasi consiglio su come trovare la causa di questo errore sarebbe molto apprezzato.

L'analisi dello stack completo dell'errore:

[MethodAccessException: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed.] 
    System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule() +96 
    System.Web.WebPages.Administration.PreApplicationStartCode.Start() +41 

[InvalidOperationException: The pre-application start initialization method Start on type System.Web.WebPages.Administration.PreApplicationStartCode threw an exception with the following error message: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed..] 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +559 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +102 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +153 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516 

[HttpException (0x80004005): The pre-application start initialization method Start on type System.Web.WebPages.Administration.PreApplicationStartCode threw an exception with the following error message: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed..] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 
+0

Hai provato a installare il pacchetto Microsoft.AspNet.WebPages.Data? – Carl

+0

Sì, il pacchetto Microsoft.AspNet.WebPages.Data è installato. –

risposta

11

Il problema era che l'applicazione Web aveva un riferimento a una versione (Framework 1) di System.Web.Administration.dll, presumo perché questo riferimento era necessario un paio di anni fa quando l'applicazione si spostava da moduli Web a webform ibridi/MVC 3.

Ho rimosso questo riferimento e il problema è scomparso. Apparentemente questa dll non è più usata. Presumo che il runtime stia recuperando la versione in conflitto di System.Web.Administration da questa dll invece di usare la nuova versione.

+0

Questa risposta mi ha appena salvato un paio d'ore. Grazie – Ian1971

+0

come hai rimosso il riferimento? – e4rthdog

+2

@ e4rthdog, espandere il nodo "References" in solution explorer, trovare System.Web.Administration.dll, fare clic con il tasto destro del mouse, selezionare "remove" –

2

Quando ho avuto questo problema che ho avuto anche di eliminare il contenuto della cartella obj.

+0

Grazie per il suggerimento, ma l'eliminazione della cartella obj non risolve il problema. Ho cancellato obj, bin e anche i file temporanei di ASP.net e ho anche provato a riavviare. –

7

Stavo ottenendo lo stesso errore su Asp.Net Webforms/MVC 5.2.2/Framework 4.5.1. quando ho pubblicato su Azure (funzionava bene su localhost).

La soluzione, ottenuto da http://craigwilson.id.au/2014/03/18/azurewap-system-methodaccessexception-attempt-by-security-transparent-method/ era:

  1. Installare i Microsoft.AspNet.WebHelpers pacchetto. Dalla console di gestione pacchetto eseguire il seguente comando:

    install-pacchetto -id Microsoft.AspNet.WebHelpers

  2. Controllare l'opzione di distribuzione "rimuovere i file aggiuntivi a destinazione" che si trova a pubblicare ... -> Impostazioni -> File Publish Options.

+3

"Rimuovere i file aggiuntivi alla destinazione" era ciò che mi causava un problema. Presumo che esistessero alcune DLL meno recenti nell'applicazione Web ASP.NET di Azure predefinita che doveva essere rimossa. – AaronLS

0

Ho creato un nuovo sito Web da un modello e ho riscontrato questo errore quando il sito Web è stato pubblicato in Azure. Ho controllato "rimuovi file extra" e "precompilato" che sono deselezionati per impostazione predefinita e ha aiutato. Non ho provato altre opzioni.