在WPF应用程序中使用WebMatrix.WebData.WebSecurity

时间:2012-10-31 15:51:35

标签: c# wpf asp.net-mvc webmatrix

我有一个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();代码,但它对上述错误没有任何影响。

我找不到任何关于如何做到这一点的例子,我在这里走到了尽头?

任何帮助都将不胜感激。

3 个答案:

答案 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)]