Является ли ASP.NET MVC 5 несовместимым с WebMatrix SimpleMembershipProvider?

У нас есть приложение, которое было построено на ASP.NET MVC 4 & Web API. Административные части сайта используют простое членство. Я заинтересован в обновлении приложения до MVC 5 / Web API 2, чтобы воспользоваться некоторыми новыми функциями, которые были добавлены. Но похоже, что они могут быть несовместимы.

В частности, после установки пакетов RC из NuGet в один из проектов в моем решении, иобновление информации web.config, приложение начинает умирать во время запуска на линии, которая вызываетWebSecurity.InitializeDatabaseConnection()с этим исключением:

[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

Другие проекты в том же решении с использованием простого членства, которое у меня естьне модернизированный продолжать работать просто отлично.

Поиск в поисках дополнительной информации, конечно, приводит к большому количеству хитов для этого исключения, но ничего особенного для WebMatrix.

FWIW: я знаю, что Microsoft представила(еще один) членство и идентификация решения, но если нет способа использовать это с существующими таблицами простого членства или безболезненным путем миграции для всех наших существующих пользовательских данных, это на самом деле не вариант для нас.

ОБНОВЛЕНИЕ (11 октября)

Я только что попробовал это снова с новой проверкой текущего ствола нашего приложения. Я использую Visual Studio 2012, но в остальном следовал инструкциям MS по обновлению существующего проекта. После обновления до MVC 5 / Web API 2 / EF 6 приложение запустилось и заработало очень хорошо.

Там не было никаких явных требований доверия вweb.config удалять. Я добавил код изэтот вопрос вGlobal.asax.csи сообщает, что приложение работает с полным доверием (в IIS Express, только F5-ed от VS).

Повторно добавив тот же вызовInitializeDatabaseConnection(), он начинает умирать с точно таким же исключением.

РЕШЕНИЕ (28 октября)

Пробуя решение в обновлении @ Kevin от пятницы, я обнаружил, что оно работает. Мне было действительно странно, что добавление этого явно не связанного пакета решило бы эти проблемы безопасности, и дажеБольше странно после того, как я удалил пакет из моего решения, и этопродолжал работать.

При более внимательном рассмотрении происходящего я понял, что причина, по которой это исправляет поведение, довольно проста:Microsoft.AspNet.WebHelpers Пакет имеет две зависимости, которые были добавлены в мое решение:Microsoft.AspNet.WebPages.Data а такжеMicrosoft.AspNet.WebPages.WebData. Microsoft переместила классы WebMatrix в новые пакеты.

Поэтому добавленный пакет помощников устранил проблему не из-за того, что он делал, а из-за того, чтоэто приводило к добавлению обновленных версий сломанных сборок к моему решению. Решение первоначальной несовместимости заключается в установке этих новых пакетов при обновлении всего остального из NuGet:

Install-Package Microsoft.AspNet.WebPages.WebData
ОБНОВЛЕНИЕ (13 мая 2015 г.)

Это былопредложил мне что вам также может понадобиться вручную установить второй новый пакет:

Install-Package Microsoft.AspNet.WebPages.Data

Этотне следует быть необходимым, потому что этот пакетявная зависимость из первых, и NuGet должен быть достаточно умен, чтобы установить оба. Но если вы получитеошибка при сборкеили не видите, как NuGet добавляет зависимость, это может вам помочь.

Ответы на вопрос(5)

Ваш ответ на вопрос