Nous avons une application existante qui a été construit sur ASP.NET MVC 4 Web & API. L'admin parties de l'utilisation du site de Simple Adhésion. Je suis intéressé par la mise à niveau de l'application MVC 5 / Web API 2), afin de profiter de certaines des nouvelles fonctionnalités qui ont été ajoutées. Mais on dirait qu'ils pourraient être incompatibles.
Plus précisément, après l'installation de la RC des paquets de NuGet dans l'un des projets dans ma solution, et la mise à jour sur le web.les informations de configuration, l'application commence à mourir lors du démarrage sur la ligne qui appelle WebSecurity.InitializeDatabaseConnection()
, avec cette exception:
[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
D'autres projets dans la même solution à l'aide de Simples Membres que j'ai pas mis à niveau continuer à travailler tout aussi bien.
Googler autour d'pour plus d'informations avère que beaucoup de hits pour cette exception, bien sûr, mais rien de particulier à WebMatrix.
FWIW: je sais que Microsoft a mis en place (encore une autre), l'appartenance et l'identité de la solution, mais si il y a moyen de l'utiliser avec la Simple Adhésion des tables, ou une voie de migration homogène pour l'ensemble de nos données de l'utilisateur, ce n'est pas vraiment une option pour nous.
Mise à JOUR (11 Oct)
J'ai juste essayé de nouveau avec une nouvelle caisse de l'actuel coffre de notre application. Je suis à l'aide de Visual Studio 2012, mais sinon, suivre les instructions à partir de MS pour la mise à niveau d'un projet existant. Après la mise à jour de MVC 5 / Web API 2 / EF 6, l'application a démarré un a couru juste fine.
Il n'y avait pas d'approbation explicite des exigences en web.config
pour le retirer. J'ai ajouté le code à partir de cette question à l' Global.asax.cs
, et il signale que l'application est en cours d'exécution avec une pleine confiance (dans IIS Express, juste F5-ed (VS).
Rajouter le même appel d' InitializeDatabaseConnection()
, il commence à mourir avec la même exception.
SOLUTION (28 Oct.)
Essayer la solution de @Kevin mise à jour à partir de vendredi, j'ai trouvé que cela fonctionne. C'était vraiment étrange pour moi que l'ajout de cette apparemment sans paquet permettrait de résoudre ces problèmes de sécurité, et encore plus étrange après que j'ai supprimé le paquet de ma solution, et il continue de travailler.
Regardons de plus près ce qui se passait, j'ai réalisé que la raison de cette mise à jour corrige le problème est assez simple: l' Microsoft.AspNet.WebHelpers
paquet a deux dépendances qui ont été ajoutées à ma solution: Microsoft.AspNet.WebPages.Data
et Microsoft.AspNet.WebPages.WebData
. Microsoft a déplacé le WebMatrix classes dans de nouveaux paquets.
Donc ajouté les aides paquet a résolu le problème, non pas à cause de tout ce qu'il était en train de faire, mais parce qu' il était à l'origine des versions mises à jour de la rupture des assemblages à ajouter à ma solution. La solution à la première incompatibilité, alors, est d'installer ces nouveaux paquets lors de la mise à jour de tout le reste de NuGet:
Install-Package Microsoft.AspNet.WebPages.WebData