Próbuję uzyskać witrynę ASP.NET MVC 3 działającą w usługach IIS 6.0.
Obecnie, gdy żądam strony z serwera, pojawia się następujący błąd:
Komunikat o błędzie analizatora: tej metody nie można wywołać na etapie inicjalizacji przed uruchomieniem aplikacji.
w tej linii:
<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>
Jestem kompletnie zaskoczony i nie mam pojęcia o cyklu życia aplikacji ASP.NET, nie mówiąc już o różnicach między 6.0 a 7.0. Czytanie stron MSDN nie wydawało się zbyt pomocne.
Czy ktoś ma jakieś spostrzeżenia lub dobre linki do dochodzenia? :)
asp.net-mvc
asp.net-mvc-3
sqwerty
źródło
źródło
Odpowiedzi:
Dodaj to w swoim web.config (w sekcji appSettings):
EDYTOWAĆ:
Dla tych, którzy pytają dlaczego, jest to znany problem opisany w informacjach o wydaniu mvc 3 Więcej szczegółów tutaj
źródło
Po uaktualnieniu niektórych moich aplikacji z ASP.NET MVC3 do MVC4 pojawia się ten błąd. Było to wynikiem zespołów WebMatrix (WebMatrix.WebData.dll i WebMatrix.Data.dll). Usunąłem te odwołania i zestawy z katalogu / bin i to rozwiązało problem.
źródło
@ Ek0nomik ma rację. Przeprowadziliśmy migrację z wersji
MembershipProvider
do nowej,ExtendedMembershipProvider
co pozwala nam skorzystać z niektórych nowych funkcji oferowanych w przestrzeni nazw WebMatrix . Domyślnie proste członkostwo jest włączone z jakiegoś powodu, więc musieliśmy je wyraźnie wyłączyć, ponieważ nie chcieliśmy posuwać się tak daleko, jak używaćSimpleMembershipProvider
.Wszystko, co musieliśmy zrobić, to dodać to do pliku web.config:
Włączenie prostego członkostwa spowodowało wykonanie kodu inicjalizacji dostawcy przed obsługą Application_Start. Nasza struktura aplikacji wymaga, aby App_Start był pierwszą rzeczą do wykonania. Osobiście zawsze bym się tego spodziewał, ale proste członkostwo zmienia to zachowanie. Strzec się.
źródło
Cóż, właśnie dostałem ten błąd i wynikał on z przypadkowego skopiowania pliku .cshtml do katalogu głównego mojego projektu. Nie było nawet uwzględnione w projekcie. Usunięto to, a błąd zniknął. Tak było w przypadku MVC3 w IIS7. Wyobrażam sobie, że niektórzy ludzie mający ten problem są na tej samej łodzi.
źródło
Jest to spowodowane przez dowolną liczbę wywołań Reflection wykonanych zbyt wcześnie w aplikacji. Tak się składa, że sugestie Web.Config zawarte w innych odpowiedziach uniemożliwiły wykonanie takiego wywołania Reflection. W moim przypadku jednak:
Używam Entity Framework i uruchomiłem
update-database
. Mam:Jak się okazuje, mieliśmy kod, który korzystał z biblioteki, która została niedawno zmodyfikowana, aby uzyskać cały kod we wszystkich przestrzeniach nazw / projektach. Konkretnie nazywało się to:
Kaboom. To spowodowało ten niejasny błąd. Migracje EF są uruchamiane w dziwnej strefie, w której aplikacja jest w połowie uruchomiona, a w połowie nie, co oznacza, że powyższej metody nigdy nie można wywołać przez żaden kod, który wywołałby migracje.
źródło