2016-01-08 1 views
1

На существующем MVC сайта, это было необходимо, чтобы добавить проверку подлинности с локальными учетными записями, так что я следовал этому Oracle blog post guideC# MVC реализация MySql.Web.Security.MySqlSimpleMembershipProvider

При выполнении на новом (доказательство-of концепция) проект, все работает нормально.

Но при этом в моем существующем сайте, при управлении:

if (WebSecurity.Login(a_Username, a_Password)) 
    Authenticated = true; 
else 
    ModelState.AddModelError("", "The user name or password provided is incorrect."); 

В AccountController, я получаю:

InvalidOperationException in WebMatrix.WebData.dll 

с сообщением

To call this method, the "Membership.Provider" property must be an instance of "ExtendedMembershipProvider". 
At 
WebMatrix.WebData.WebSecurity.VerifyProvider() +106 

Может быть проблема моей версии WebMatrix.WebData? Любые идеи, пожалуйста?

Update: Замечу, что сайт тест (который работает) был создан в качестве веб-приложения VS2012 MVC4 и я вижу, что все ссылки, касающиеся System.Web (т.е. System.Web.Mvc версия 4.0.0) имеют более раннюю версию, чем на моем фактическом сайте (т.е. System.Web.Mvc версия 5.2.2). Я полагаю, это не должно быть проблемой, если есть обратная совместимость.

ответ

0

Я, наконец, нашел причину своей проблемы. Это была версия библиотеки зависимостей WebMatrix.Data.

Я попытался обновить его через Nuget Package Manager, и это решило проблему, поэтому теперь я не получаю эти исключения при вызове методов класса WebMatrix.WebData.WebSecurity.

Решение:

  • правой кнопкой мыши на свой веб-сайт проекта => Управление NuGet пакетов.
  • Выберите «Online» в меню слева, чтобы отобразить все доступные онлайн-пакеты nuget.
  • Тип WebMatrix в поле поиска и прокрутки, пока не найдете «ASP.Net веб-страницы 2 базы данных Библиотека»
  • Выберите его и нажмите кнопку «Установить»

После этого я просто построил решение и протестировали код, и он работает просто отлично!

PS: В информации о пакете говорится: «Пакет Legacy, WebMatrix.Data теперь включен в пакет Microsoft.AspNet.WebPages.Data». Также: «Зависимости Microsoft.AspNet.WebPages.Data (≥ 2.0.20710)»