Ist ASP.NET MVC 5 nicht mit dem WebMatrix SimpleMembershipProvider kompatibel?

Wir haben eine vorhandene Anwendung, die auf ASP.NET MVC 4 & Web API basiert. Die Administratorteile der Site verwenden die einfache Mitgliedschaft. Ich möchte die Anwendung auf MVC 5 / Web API 2 aktualisieren, um einige der neuen Funktionen nutzen zu können, die hinzugefügt wurden. Aber es sieht so aus, als ob sie inkompatibel wären.

Insbesondere nach der Installation der RC-Pakete von NuGet in eines der Projekte in meiner Lösung undAktualisieren der web.config-InformationenWenn die Anwendung während des Startvorgangs auf der angerufenen Leitung abstirbtWebSecurity.InitializeDatabaseConnection()mit dieser Ausnahme:

[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

Andere Projekte in der gleichen Lösung mit einfacher Mitgliedschaft, die ich habenicht aktualisiert weiterhin gut funktionieren.

Wenn Sie nach weiteren Informationen suchen, werden natürlich viele Treffer für diese Ausnahme angezeigt, aber für WebMatrix nichts Besonderes.

FWIW: Ich weiß, dass Microsoft eingeführt hat(noch eine) Mitgliedschafts- und IdentitätslösungAber wenn es keine Möglichkeit gibt, dies mit den vorhandenen Simple Membership-Tabellen oder einem nahtlosen Migrationspfad für alle vorhandenen Benutzerdaten zu verwenden, ist dies für uns keine Option.

UPDATE (11. Oktober)

Ich habe es gerade noch einmal mit einem neuen Checkout des aktuellen Trunks unserer App versucht. Ich verwende Visual Studio 2012, befolge aber ansonsten die Anweisungen von MS zum Aktualisieren eines vorhandenen Projekts. Nach dem Update auf MVC 5 / Web API 2 / EF 6 startete die App und lief einwandfrei.

Es gab keine ausdrücklichen Vertrauensvoraussetzungen in derweb.config zu entfernen. Ich habe den Code von hinzugefügtdiese Frage zuGlobal.asax.csund es wird berichtet, dass die App mit voller Vertrauenswürdigkeit ausgeführt wird (in IIS Express nur F5-ed von VS).

Derselbe Anruf wird erneut hinzugefügtInitializeDatabaseConnection()beginnt es mit genau der gleichen Ausnahme zu sterben.

LÖSUNG (28 Okt)

Als ich die Lösung in @ Kevins Update vom Freitag ausprobierte, stellte ich fest, dass es funktioniert. Es war wirklich seltsam für mich, dass das Hinzufügen dieses scheinbar nicht verwandten Pakets diese Sicherheitsprobleme lösen würde und sogarMehr seltsam, nachdem ich das Paket aus meiner Lösung entfernt habe, und esarbeitete weiter.

Bei genauerem Hinsehen wurde mir klar, dass der Grund, warum dies das Verhalten behebt, recht einfach ist: derMicrosoft.AspNet.WebHelpers Das Paket enthält zwei Abhängigkeiten, die meiner Lösung hinzugefügt wurden:Microsoft.AspNet.WebPages.Data undMicrosoft.AspNet.WebPages.WebData. Microsoft hat die WebMatrix-Klassen in neue Pakete verschoben.

Also fügte das Hilfspaket das Problem hinzu, nicht wegen irgendetwas, was es tat, sondern weilEs führte dazu, dass aktualisierte Versionen der beschädigten Assemblys hinzugefügt wurden zu meiner Lösung. Die Lösung für die anfängliche Inkompatibilität besteht darin, diese neuen Pakete zu installieren, wenn Sie alles andere von NuGet aus aktualisieren:

Install-Package Microsoft.AspNet.WebPages.WebData
UPDATE (13. Mai 2015)

Es ist gewesenschlug mir vor Möglicherweise müssen Sie das zweite neue Paket auch manuell installieren:

Install-Package Microsoft.AspNet.WebPages.Data

Diesesollte nicht notwendig sein, weil dieses Paket isteine explizite Abhängigkeit und NuGet sollte intelligent genug sein, um beide zu installieren. Aber wenn Sie bekommenein fehler beim bauenWenn NuGet die Abhängigkeit nicht hinzufügt, kann dies hilfreich sein.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage