![](/img/trans.png)
[英]Webmatrix.WebData.WebSecurity with MySql is not working. Throwing sql syntax error in WebSecurity.UserExists() check
[英]Using WebMatrix.WebData.WebSecurity in a WPF application
我有一个使用现成的WebMatrix安全性的MVC4 Internet项目。 提出了将WPF前端添加到同一应用程序的要求。 我已将模型移到单独的DLL中,并开始在相同实体上构建WPF前端。
我唯一的问题是尝试与现有的安全模型集成。 我已经在WPF项目的app.config中添加了一个system.web部分,如下所示:
<system.web>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
</system.web>
现在,当我调用WebSecurity.Login("Username", "Password")
,出现以下错误:
在调用“ WebSecurity”类的任何其他方法之前,必须调用“ WebSecurity.InitializeDatabaseConnection”方法。 该调用应放在网站根目录中的_AppStart.cshtml文件中。
我试过调用InitializeSimpleMembershipAttribute();
我的WPF应用程序启动时MVC项目随附的代码,但对上述错误没有影响。
我找不到任何在线示例,该怎么办?
任何帮助,将不胜感激。
最后,我决定采用一种不同的方法,并使用WCF身份验证服务在我的不同客户端之间共享,如本文章演练:使用ASP.NET应用程序服务中所述 。
与尝试使Web矩阵直接在WPF项目内部工作相比,这是一个更整洁的解决方案。
您需要做两件事才能使它起作用
首先在Global.asax.cs中将其添加到Application_Start()的底部
var attr = new MixThread.Web.Filters.InitializeSimpleMembershipAttribute();
attr.OnActionExecuting(null);
其次,将此添加到您的Web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
您应该能够像这样构建基于WCF的登录名:
[AllowAnonymous]
public bool Login(string username, string password)
{
return WebMatrix.WebData.WebSecurity.Login(username, password);
}
您可能也需要将此添加到服务中。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.