C#MVC实现MySql.Web.Security.MySqlSimpleMembershipProvider

时间:2016-01-08 13:35:27

标签: c# asp.net-mvc simplemembership

在现有的MVC站点上,需要使用本地帐户添加身份验证,因此我遵循了这一点 Oracle blog post guide

在新的(概念验证)项目上进行时,一切正常。

但是当我在现有网站上执行此操作时,运行:

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版本的问题吗? 有什么想法吗?

更新:请注意,测试站点(正在运行)是作为VS2012 MVC4 Web应用程序创建的,我看到有关System.Web的所有参考资料(即System.Web.Mvc)版本4.0.0)的版本早于我的实际版本(即System.Web.Mvc版本5.2.2)。我想这不应该是一个问题,只要有向后兼容性。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的原因。 它是WebMatrix.Data依赖库的版本。

我尝试通过Nuget Package Manager更新它,这解决了问题,所以,现在我在调用WebMatrix.WebData.WebSecurity类方法时没有得到这些异常。

解决方案:

  • 右键点击您的网站项目=>管理Nuget包。
  • 选择"在线"从左侧菜单中显示所有可用的在线nuget包。
  • 在“搜索”字段中键入WebMatrix,然后滚动,直至找到“#S; ASP.Net网页2数据库库"
  • 选择它并单击"安装"

在此之后,我刚刚构建了解决方案并测试了代码,它运行得很好!

PS:在包裹信息中它说" Legacy包,WebMatrix.Data现在包含在' Microsoft.AspNet.WebPages.Data' 。包#&34;另外:"依赖关系Microsoft.AspNet.WebPages.Data(≥2.0.20710)"