Próba przy użyciu przezroczystej metody zabezpieczeń „WebMatrix.WebData.PreApplicationStartCode.Start ()”

176

Aktualizacja: to samo dla mvc 4 do mvc 5.

Zacząłem nowy projekt MVC 4 i zmigrowałem w nim projekt MVC 3 (kontrolery / modele / skrypty itp.). Podczas gdy wszystko się teraz kompiluje, pojawia się następujący błąd:

Próba uzyskania dostępu do krytycznej dla bezpieczeństwa metody „System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)” za pomocą przezroczystej metody zabezpieczeń „WebMatrix.WebData.PreApplicationStartCode.Start ()” nie powiodła się.

Nie mogę znaleźć niczego w sieci z tym błędem. Błąd pojawia się przed uruchomieniem aplikacji.

Próbowałem ponownie zainstalować wszystkie zestawy za pomocą nuget, bezskutecznie umieszczając „czysty” plik web.config.

Czy ktoś miał wcześniej ten problem?

Elger Mensonides
źródło

Odpowiedzi:

246

U mnie ten błąd był spowodowany tym, że NIE miałem zainstalowanego Microsoft.AspNet.WebHelpers po aktualizacji z MVC 4 do MVC 5. Zostało to naprawione poprzez zainstalowanie pakietu NuGet

Install-Package -Id  Microsoft.AspNet.WebHelpers
Michael
źródło
1
To rozwiązało problem; spowodowało to pewne problemy z przestrzenią nazw w mojej Resourcesklasie, ale zmieniłem ją na Properties.Resources.xxxxxi problemy zostały naprawione.
Cody
2
Uruchomiłem to i nie zadziałało ... ale potem na szczęście zobaczyłem, że w innej odpowiedzi jest drugie polecenie do uruchomienia: stackoverflow.com/a/22587521/482256
Kevin Nelson
to naprawiłem to dla mnie, ale potrzebowałem również poniżej w powiązaniach zestawu code<dependentAssembly> <assemblyIdentity name = "WebMatrix.WebData" publicKeyToken = "31bf3856ad364e35" culture = "neutral" /> <bindingRedirect oldVersion = "0.0.0.0-3.0.0.0 "newVersion =" 3.0.0.0 "/> </dependentAssembly>code
Marchief
Instaluję powyższy pakiet i problem zniknął. Użyłem NUget UI, aby go zainstalować, a także zainstalowałem wszystkie zależności
Atta H.
204

Jeśli otrzymujesz błąd

Próba uzyskania dostępu do krytycznej dla bezpieczeństwa metody „System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)” za pomocą przezroczystej metody zabezpieczeń „WebMatrix.WebData.PreApplicationStartCode.Start ()” nie powiodła się.

Aby naprawić ten pakiet, zainstaluj ten pakiet za pomocą menedżera pakietów NuGet.

Install-Package Microsoft.AspNet.WebHelpers

Po tym prawdopodobnie pojawi się kolejny błąd

Nie można załadować zestawu WebMatrix.Data w wersji 3.0.0.0

aby naprawić ten pakiet, zainstaluj ten pakiet za pomocą Menedżera pakietów NuGet.

Install-Package Microsoft.AspNet.WebPages.Data
Anushka
źródło
Miałem dokładnie ten błąd podczas aktualizacji do VS 2015 RTM. Ten sam kod działał dobrze w VS 2013, jedyną różnicą jest nowy plik .config, który 2015 generuje dla IIS, który, jak podejrzewam, ignoruje IISExpress 2013. Ta odpowiedź rozwiązała również ten przypadek, dodaj oba nugety.
angularsen
Należy wspomnieć, że nie udało mi się w ogóle uruchomić mojej strony internetowej z VS2015 RTM. Zainstalowanie Microsoft.AspNet.WebHelpers naprawiło YSOD, ale zamiast tego dostałem limit czasu z powodu niektórych praw dostępu do sql. Dokładnie ten sam kod działał dobrze w VS2013.
angularsen
1
Napotkałem ten problem przy użyciu VS 2013 Express Edition podczas aktualizacji z ASP .NET MVC 4 do ASP .NET MVC 5. Było to pomocne, ponieważ @Anushka powiedział o drugim problemie z rozwiązaniem.
Jerameel Resco
Ten błąd pojawia się, gdy próbuję uruchomić moje rozwiązanie w VS 2015. Działa doskonale w VS 2013. Instalacja dwóch pakietów zgodnie z sugestią działa, ale nie wiem, dlaczego muszę je instalować. Mam inne rozwiązania, które opracowałem w VS 2013, które nie powodują tego błędu w VS 2015.
John81
2
Odkryliśmy, że VS2015 decyduje się umieścić niektóre biblioteki DLL WebMatrix w katalogu bin aplikacji internetowej podczas kompilacji - VS2013 tego nie robi. Nie wiem, skąd 2015 pobiera te biblioteki DLL, ale muszą one być inną wersją niż biblioteki DLL ładowane z GAC (chyba) podczas uruchamiania aplikacji, która została skompilowana przez VS2013 bez jawnie DLL WebMatrix zawarte w katalogu bin aplikacji. Zauważ, że jeśli usuniesz 4 pliki WebMatrix z danych wyjściowych 2015 i ponownie uruchomisz IIS, problem zniknie.
Simon Green
19

Dla każdego lądującego tutaj, który próbuje zaktualizować MVC 4 do MVC5, udało mi się rozwiązać ten problem, postępując zgodnie z instrukcjami podanymi na stronie 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 .

Musiałem również zainstalować pakiet „Microsoft.AspNet.WebApi.WebHost” z nuget. Ale to jest to.

Aha, i musiałem stworzyć tę aplikację. <add key="owin:AutomaticAppStartup" value="false" />

:)

Alex Dresko
źródło
14

Wypróbowałem wszystkie powyższe rozwiązania i nadal nie działały, dopóki nie stwierdziłem, że element kompilacji web.config odwołuje się do wersji 2.0.0.0 WebMatrix.Data i WebMatrix.WebData. Pomogła mi zmiana wersji tych wpisów w pliku web.config na 3.0.0.0.

Paweł
źródło
10

Miałem podobny problem podczas aktualizacji mvc 4do mvc 5:

Próba uzyskania dostępu do krytycznej dla bezpieczeństwa metody „System.Web.WebPages.ApplicationPart..ctor (System.Reflection.Assembly, System.String)” za pomocą przezroczystej metody zabezpieczeń „System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule ()” nie powiodła się.

Pole wyboru Usuń dodatkowe pliki w oknie dialogowym publikowania rozwiązało to za mnie.

Edward Olamisan
źródło
Wystąpił ten błąd w mojej aplikacji hostowanej przez dostawcę SharePoint 2013 (ASP.NET MVC 5, wdrożona na platformie Azure), „usuń dodatkowe pliki” w oknie dialogowym publikowania również go rozwiązało.
Anatoly Mironov
8

Ponowna instalacja Microsoft.AspNet.WebHelpersdziała dla mnie

Update-Package reinstall Microsoft.AspNet.WebHelpers
Pablo Claus
źródło
6

Jeszcze jedna sugestia ... Było to spowodowane przez niektóre stare biblioteki DLL z projektu MVC 3 po uaktualnieniu do MVC 5 w folderze bin witryny na serwerze wdrażania. Mimo że te biblioteki DLL nie były już używane przez bazę kodu, wydawało się, że są przyczyną problemu. Wyczyszczono to wszystko i ponownie wdrożono i było dobrze.

chris
źródło
To był powód mojego błędu. Miałem stare i nowe pliki w folderze bin. dzięki
Abhinaw Sharma
5

Możesz również otrzymać:

Nie można załadować pliku lub zestawu „WebMatrix.Data, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35” lub jednej z jego zależności. Definicja manifestu zlokalizowanego zestawu nie jest zgodna z odwołaniem do zestawu. (Wyjątek od HRESULT: 0x80131040)

To zostało przeniesione do tego pakietu

 Install-Package Microsoft.AspNet.WebPages.Data

Prawdopodobnie powinieneś zrobić czystą kompilację przed próbą odpowiedzi na to pytanie i po zaktualizowaniu pakietów

Simon_Weaver
źródło
3

Oto jak rozwiązałem ten problem:

Otwórz konsolę menedżera pakietów NuGet i zainstaluj poniższe pakiety NuGet:

Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package

Wyczyść rozwiązanie, odbuduj i moja aplikacja internetowa asp.net zacznie działać!

Mostafa
źródło
2

Usunięcie wszystkich plików z bin, a następnie odbudowanie rozwiązania zadziałało.

theskhan
źródło
1

U mnie ten błąd był spowodowany tym, że DotNetOpenAuth nie był kompatybilny z MVC5 po aktualizacji z MVC4 do MVC5. Odinstalowanie Microsoft.Web.WebPages.OAuth rozwiązało problem.

Dean North
źródło
1

Usunąłem go z moich odniesień, a następnie uruchom go w konsoli Menedżera pakietów

Install-Package WebMatrix.Data

Na koniec dodaj zestaw WebMatrix.WebData do referencji i przebuduj projekt. Działa dla mnie, mam nadzieję, że rozwiąże również twój problem.

Ali Golgol
źródło
0

Zainstalowałem z nim webapi za pośrednictwem pakietu nuget helppages. Ten pakiet zastąpił większość plików binarnych asp.net mvc 4 wersjami beta, które nie współpracowały dobrze z resztą projektu. Poprawka polegała na przywróceniu oryginalnych bibliotek dll mvc 4 i wszystko było dobrze.

Elger Mensonides
źródło
0

Miałem ten sam problem, musiałem zaktualizować MVC Future (Microsoft.AspNet.Mvc.Futures)

Install-Package Microsoft.AspNet.Mvc.Futures
PvtVandals
źródło
0

U mnie ten błąd rozwiązał dodając

<system.web>
 <trust level="Full">
 </system.web>

w web.config

Omar Kamel
źródło