我有一个MVC4互联网项目,它使用现成的WebMatrix安全性。已经出现了将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文件中。
我尝试在WPF应用程序的启动时调用MVC项目附带的InitializeSimpleMembershipAttribute();
代码,但它对上述错误没有任何影响。
我找不到任何关于如何做到这一点的例子,我在这里走到了尽头?
任何帮助都将不胜感激。
答案 0 :(得分:0)
最后,我决定采用不同的方法,并使用WCF身份验证服务在我的不同客户端之间共享,如本文Walkthrough: Using ASP.NET Application Services中所述。
这比尝试让web矩阵直接从WPF项目内部工作更简洁。
答案 1 :(得分:0)
你需要做两件事才能让它发挥作用
首先在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);
}
答案 2 :(得分:0)
您可能还需要将此添加到您的服务中。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]