2014-09-10 9 views
5

Przy użyciu Visual Studio 2013 zmigrowałem hybrydową aplikację sieci Web Asp.Net Webforms/MVC 3/Framework 4.0 do Asp.Net Webforms/MVC 5.2.2/Framework 4.5 .1.MethodAccessException wewnątrz System.Web.WebPages migracja mvc 3 do mvc 5

I następnie wykonać czynności opisane w tych linków:

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

Kiedy uruchomić aplikację w visual studio I ten błąd:

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.

próbowałem te sugestie, które znalazłem na StackOverflow, ale żaden nie rozwiązuje problemu:

  1. wyczyść folder bin i odbuduj
  2. Zainstaluj pakiet Nuget Microsoft.Aspnet.WebHelpers.
  3. Upewnij się, że wszystkie odwołania do pliku web.config System.Web.Mvc i System.Web.WebPages wskazują poprawną wersję (odpowiednio 5.2.2.0 i 3.0.0.0).

Wszelkie porady dotyczące sposobu znalezienia przyczyny tego błędu będą mile widziane.

Pełne ślad stosu błędu:

[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

Czy próbowałeś już zainstalować pakiet Microsoft.AspNet.WebPages.Data? – Carl

+0

Tak, pakiet Microsoft.AspNet.WebPages.Data jest zainstalowany. –

Odpowiedz

11

Problem polegał na tym, że aplikacja internetowa odwoływała się do (System 1) wersji System.Web.Administration.dll, zakładam, że ta referencja była potrzebna kilka lat temu, kiedy aplikacja została przeniesiona z formularzy internetowych do hybrydowe formularze/MVC 3.

Usunąłem to odwołanie i problem zniknął. Najwyraźniej ta biblioteka dll nie jest już używana. Zakładam, że środowisko wykonawcze pobierało sprzeczną wersję System.Web.Administration z tej biblioteki DLL zamiast używać nowej wersji.

+0

Ta odpowiedź zaoszczędziła mi tylko kilka godzin. Dzięki – Ian1971

+0

jak usunąć referencję? – e4rthdog

+2

@ e4rthdog, rozwiń węzeł "References" w eksploratorze rozwiązań, znajdź System.Web.Administration.dll, kliknij prawym przyciskiem myszy, wybierz "usuń" –

2

Kiedy miałem ten problem miałem również usunąć zawartość folderu obj.

+0

Dzięki za sugestię, ale usunięcie folderu obj nie naprawi tego. Usunąłem obj, bin, a także ramowe tymczasowe pliki ASP.net, a nawet spróbowałem ponownie uruchomić system. –

7

Otrzymałem ten sam błąd w Asp.Net Webforms/MVC 5.2.2/Framework 4.5.1. kiedy opublikowałem na Azure (działało dobrze na localhost).

Roztwór otrzymany z http://craigwilson.id.au/2014/03/18/azurewap-system-methodaccessexception-attempt-by-security-transparent-method/ był następujący:

  1. Instalowanie Microsoft.AspNet.WebHelpers pakietów. Z konsoli zarządzania pakietami uruchom następujące polecenie:

    Install-Package -id Microsoft.AspNet.WebHelpers

  2. Zaznacz opcję wdrażania "Usuń dodatkowe pliki do miejsca przeznaczenia znajdującego się " Publish ... -> Ustawienia -> Opcje publikowania pliku.

+3

"Usunięcie dodatkowych plików w miejscu docelowym" było przyczyną problemu. Zakładam, że w domyślnej aplikacji sieci Web ASP.NET w sieci Web były starsze biblioteki DLL, które musiały zostać usunięte. – AaronLS

0

Stworzyłem nową witrynę z szablonu i otrzymywałem ten błąd po opublikowaniu witryny internetowej na platformie Azure. Sprawdziłem "usuń dodatkowe pliki" i "prekompiluj", które są domyślnie odznaczone i pomogły. Nie próbowałem żadnych innych opcji.