¿ASP.NET MVC 5 es incompatible con WebMatrix SimpleMembershipProvider?

Tenemos una aplicación existente que se construyó en ASP.NET MVC 4 & Web API. Las partes de administración del sitio utilizan la membresía simple. Estoy interesado en actualizar la aplicación a MVC 5 / Web API 2, para aprovechar algunas de las nuevas características que se han agregado. Pero parece que podrían ser incompatibles.

Específicamente, después de instalar los paquetes RC de NuGet en uno de los proyectos en mi solución, yactualizando la información de web.config, la aplicación comienza a morir durante el inicio en la línea que llamaWebSecurity.InitializeDatabaseConnection(), con esta excepción:

[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

Otros proyectos en la misma solución usando Membresía Simple que tengono actualizado sigue funcionando bien.

Buscar en Google para obtener más información genera muchos éxitos para esa excepción, por supuesto, pero nada especial para WebMatrix.

FWIW: Sé que Microsoft ha introducido(otro) solución de identidad y membresía, pero a menos que haya una forma de usar eso con las tablas de membresía simple existentes, o una ruta de migración perfecta para todos nuestros datos de usuario existentes, esa no es realmente una opción para nosotros.

ACTUALIZACIÓN (11 de octubre)

Acabo de intentar esto de nuevo con una nueva comprobación de la troncal actual de nuestra aplicación. Estoy usando Visual Studio 2012, pero de lo contrario, seguí las instrucciones de MS para actualizar un proyecto existente. Después de actualizar a MVC 5 / Web API 2 / EF 6, la aplicación comenzó a funcionar bien.

No había requisitos explícitos de confianza en elweb.config para eliminar. Agregué el código deesta pregunta aGlobal.asax.cs, e informa que la aplicación se está ejecutando con plena confianza (en IIS Express, solo F5-ed de VS).

Re-agregando la misma llamada aInitializeDatabaseConnection(), comienza a morir con la misma excepción.

SOLUCIÓN (28 oct)

Probando la solución en la actualización de @Kevin del viernes, encontré que funciona. Fue realmente extraño para mí que agregar este paquete aparentemente no relacionado resolvería estos problemas de seguridad, e inclusoMás extraño después de que quité el paquete de mi solución, ysiguió trabajando.

Mirando más de cerca lo que estaba sucediendo, me di cuenta de que la razón por la que esto corrige el comportamiento es bastante simple:Microsoft.AspNet.WebHelpers El paquete tiene dos dependencias que se agregaron a mi solución:Microsoft.AspNet.WebPages.Data yMicrosoft.AspNet.WebPages.WebData. Microsoft ha movido las clases de WebMatrix a nuevos paquetes.

Así que agregó que el paquete de ayuda solucionó el problema, no por nada de lo que estaba haciendo, sino porquecausaba que se agregaran versiones actualizadas de los ensamblajes rotos a mi solucion La solución a la incompatibilidad inicial, entonces, es instalar estos nuevos paquetes al actualizar todo lo demás desde NuGet:

Install-Package Microsoft.AspNet.WebPages.WebData
ACTUALIZACIÓN (13 de mayo de 2015)

Ha sidosugerido para mi que también puede necesitar instalar manualmente el segundo paquete nuevo:

Install-Package Microsoft.AspNet.WebPages.Data

Estano debería ser necesario, porque este paquete esuna dependencia explícita del primero, y NuGet debería ser lo suficientemente inteligente como para instalar ambos. Pero si consiguesun error al construir, o no vea que NuGet agregue la dependencia, podría ayudarlo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta