1

我有一个使用开箱即用的 WebMatrix 安全性的 MVC4 互联网项目。需要将 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 项目附带的代码,但这对上述错误没有影响。

我在网上找不到任何关于如何做到这一点的例子,我在这里走上死胡同吗?

任何帮助,将不胜感激。

4

3 回答 3

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);
}
于 2013-04-01T12:50:09.180 回答
0

您可能还需要将此添加到您的服务中。

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
于 2013-12-25T15:55:57.983 回答
0

最后,我决定采用不同的方法并使用 WCF 身份验证服务在我的不同客户端之间共享,如本文演练:使用 ASP.NET 应用程序服务中所述。

这是一个比试图让 Web 矩阵直接从 WPF 项目内部工作更简洁的解决方案。

于 2012-11-05T09:20:43.017 回答