Czy ASP.NET MVC 5 jest niezgodny z WebMatrix SimpleMembershipProvider?

Mamy istniejącą aplikację zbudowaną na ASP.NET MVC 4 & Web API. Administracyjne części witryny korzystają z prostego członkostwa. Jestem zainteresowany aktualizacją aplikacji do MVC 5 / Web API 2, aby skorzystać z niektórych nowych funkcji, które zostały dodane. Ale wygląda na to, że mogą być niekompatybilne.

W szczególności po zainstalowaniu pakietów RC z NuGet w jednym z projektów w moim rozwiązaniuaktualizacja informacji web.config, aplikacja zaczyna umierać podczas uruchamiania na linii, która wywołujeWebSecurity.InitializeDatabaseConnection(), z tym wyjątkiem:

[MethodAccessException: Attempt by security transparent method 'WebMatrix.WebData.PreApplicationStartCode.OnConnectionOpened(System.Object, WebMatrix.Data.ConnectionEventArgs)' to access security critical method 'System.Web.WebPages.HttpContextExtensions.RegisterForDispose(System.Web.HttpContextBase, System.IDisposable)' failed.]
   WebMatrix.WebData.PreApplicationStartCode.OnConnectionOpened(Object sender, ConnectionEventArgs e) +70
   WebMatrix.Data.Database.OnConnectionOpened() +70
   WebMatrix.Data.Database.EnsureConnectionOpen() +51
   WebMatrix.Data.Database.QueryValue(String commandText, Object[] args) +63
   WebMatrix.WebData.DatabaseWrapper.QueryValue(String commandText, Object[] parameters) +13
   WebMatrix.WebData.SimpleMembershipProvider.GetUserId(IDatabase db, String userTableName, String userNameColumn, String userIdColumn, String userName) +206
   WebMatrix.WebData.SimpleMembershipProvider.ValidateUserTable() +87

Inne projekty w tym samym rozwiązaniu przy użyciu Simple Membership, które mamnie uaktualnione nadal działają dobrze.

Wyszukanie go w celu uzyskania większej ilości informacji powoduje oczywiście wiele trafień dla tego wyjątku, ale nic szczególnego dla WebMatrix.

FWIW: Wiem, że Microsoft wprowadził(jeszcze jedno) członkostwo i rozwiązanie tożsamościowe, ale chyba że istnieje sposób na wykorzystanie tego z istniejącymi tabelami Simple Membership lub płynną ścieżką migracji dla wszystkich naszych istniejących danych użytkownika, nie jest to dla nas żadna opcja.

UPDATE (11 października)

Właśnie wypróbowałem to ponownie dzięki nowemu sprawdzeniu bieżącego bagażnika naszej aplikacji. Korzystam z Visual Studio 2012, ale poza tym postępowałem zgodnie z instrukcjami MS dotyczącymi aktualizacji istniejącego projektu. Po aktualizacji do MVC 5 / Web API 2 / EF 6 aplikacja uruchomiła się i działała bez zarzutu.

Wweb.config usuwać. Dodałem kod zto pytanie doGlobal.asax.csi informuje, że aplikacja działa z pełnym zaufaniem (w IIS Express, tylko F5-ed z VS).

Ponowne dodanie tego samego połączenia doInitializeDatabaseConnection(), zaczyna umierać z takim samym wyjątkiem.

ROZWIĄZANIE (28 października)

Próbując rozwiązania w aktualizacji @ Kevina z piątku, odkryłem, że działa. To było dla mnie naprawdę dziwne, że dodanie tego pozornie niepowiązanego pakietu rozwiąże te problemy bezpieczeństwa, a nawetwięcej dziwne po usunięciu paczki z mojego rozwiązania i tegopracował.

Przyjrzawszy się bliżej temu, co się działo, zdałem sobie sprawę, że powód, dla którego to naprawia zachowanie, jest całkiem prosty:Microsoft.AspNet.WebHelpers pakiet ma dwie zależności, które zostały dodane do mojego rozwiązania:Microsoft.AspNet.WebPages.Data iMicrosoft.AspNet.WebPages.WebData. Microsoft przeniósł klasy WebMatrix do nowych pakietów.

Tak więc dodany pakiet pomocy poprawił problem, nie z powodu tego, co robił, ale dlatego, żepowodowało to dodanie zaktualizowanych wersji uszkodzonych zespołów do mojego rozwiązania. Rozwiązaniem początkowej niezgodności jest więc zainstalowanie tych nowych pakietów podczas aktualizowania wszystkiego z NuGet:

Install-Package Microsoft.AspNet.WebPages.WebData
AKTUALIZACJA (13 maja 2015 r.)

To byłozasugerował mi że może być również konieczne ręczne zainstalowanie drugiego nowego pakietu:

Install-Package Microsoft.AspNet.WebPages.Data

Tonie powinieneś być konieczne, ponieważ ten pakiet jestwyraźna zależność pierwszego, a NuGet powinien być wystarczająco inteligentny, aby zainstalować oba. Ale jeśli dostanieszbłąd podczas budowanialub nie widzisz, że NuGet dodaje zależność, może ci to pomóc.

questionAnswers(5)

yourAnswerToTheQuestion