A ASP.NET MVC 5 é incompatível com o SimpleMembershipProvider do WebMatrix?

Nós temos um aplicativo existente que foi construído em ASP.NET MVC 4 e API Web. As partes administrativas do site usam associação simples. Estou interessado em atualizar o aplicativo para o MVC 5 / Web API 2, para aproveitar alguns dos novos recursos que foram adicionados. Mas parece que eles podem ser incompatíveis.

Especificamente, depois de instalar os pacotes RC do NuGet em um dos projetos na minha solução, eatualizando as informações do web.config, o aplicativo começa a morrer durante a inicialização na linha que chamaWebSecurity.InitializeDatabaseConnection(), com esta exceção:

[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

Outros projetos na mesma solução usando Simple Membership que eu tenhonão atualizado continuar a trabalhar muito bem.

Pesquisando por mais informações, há muitos hits para essa exceção, é claro, mas nada de especial para o WebMatrix.

FWIW: Eu sei que a Microsoft introduziu(ainda outra) solução de associação e identidademas, a menos que haja uma maneira de usar isso com as tabelas existentes de Associação Simples ou um caminho de migração perfeito para todos os dados de usuários existentes, isso não é uma opção para nós.

ATUALIZAÇÃO (11 de outubro)

Eu tentei isso novamente com um novo checkout do tronco atual do nosso aplicativo. Estou usando o Visual Studio 2012, mas segui as instruções do MS para atualizar um projeto existente. Depois de atualizar para MVC 5 / Web API 2 / EF 6, o aplicativo começou um correu muito bem.

Não havia requisitos de confiança explícitos noweb.config remover. Eu adicionei o código deessa questão paraGlobal.asax.cs, e relata que o aplicativo está sendo executado com confiança total (no IIS Express, apenas F5-ed do VS).

Re-adicionando a mesma chamada paraInitializeDatabaseConnection(), começa a morrer com a mesma exceção.

SOLUÇÃO (28 de outubro)

Tentando a solução na atualização de Kevin, de sexta-feira, descobri que funciona. Foi muito estranho para mim que adicionar este pacote aparentemente não relacionado resolveria esses problemas de segurança, e até mesmoMais estranho depois que eu removi o pacote da minha solução, econtinuou trabalhando.

Olhando mais de perto o que estava acontecendo, percebi que a razão pela qual isso conserta o comportamento é bem simples: oMicrosoft.AspNet.WebHelpers package tem duas dependências que estavam sendo adicionadas à minha solução:Microsoft.AspNet.WebPages.Data eMicrosoft.AspNet.WebPages.WebData. A Microsoft mudou as classes WebMatrix para novos pacotes.

Então, adicionamos o pacote de ajudantes corrigindo o problema, não por causa de qualquer coisa que estivesse fazendo, mas porqueestava causando versões atualizadas dos conjuntos quebrados a serem adicionados para minha solução. A solução para a incompatibilidade inicial, então, é instalar esses novos pacotes ao atualizar todo o resto do NuGet:

Install-Package Microsoft.AspNet.WebPages.WebData
ATUALIZAÇÃO (13 de maio de 2015)

Tem sidosugeriu para mim que você também pode precisar instalar manualmente o segundo novo pacote:

Install-Package Microsoft.AspNet.WebPages.Data

estenão deveria ser necessário, porque este pacote éuma dependência explícita do primeiro, e o NuGet deve ser inteligente o suficiente para instalar ambos. Mas se você conseguirum erro ao construir, ou não vejo o NuGet adicionar a dependência, isso pode ajudá-lo.

questionAnswers(5)

yourAnswerToTheQuestion