在现有的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)。我想这不应该是一个问题,只要有向后兼容性。
答案 0 :(得分:0)
我终于找到了解决问题的原因。 它是WebMatrix.Data依赖库的版本。
我尝试通过Nuget Package Manager更新它,这解决了问题,所以,现在我在调用WebMatrix.WebData.WebSecurity类方法时没有得到这些异常。
解决方案:
在此之后,我刚刚构建了解决方案并测试了代码,它运行得很好!
PS:在包裹信息中它说" Legacy包,WebMatrix.Data现在包含在' Microsoft.AspNet.WebPages.Data' 。包#&34;另外:"依赖关系Microsoft.AspNet.WebPages.Data(≥2.0.20710)"