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

У нас есть приложение, которое было построено на ASP.NET MVC 4 & Веб 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.WebDataMicrosoft переместила классы WebMatrix в новые пакеты.

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

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

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

Install-Package Microsoft.AspNet.WebPages.Data

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

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

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