2012-10-31 87 views
1

我有一個使用開箱即用的WebMatrix安全性的MVC4互聯網項目。有一個要求將WPF前端添加到相同的應用程序。我已經將模型移動到單獨的DLL中,並開始通過相同的實體構建WPF前端。在WPF應用程序中使用WebMatrix.WebData.WebSecurity

我遇到的唯一問題是試圖與現有的安全模型集成。我加了的System.Web節到我的WPF項目的app.config如下:

<system.web> 
    <membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
     <clear/> 
     <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
    </membership> 
</system.web> 

現在,當我打電話WebSecurity.Login("Username", "Password")我得到以下錯誤:

You must call the "WebSecurity.InitializeDatabaseConnection" method before you call any other method of the "WebSecurity" class. This call should be placed in an _AppStart.cshtml file in the root of your site.

我已經打過電話了InitializeSimpleMembershipAttribute();碼在我的WPF應用程序啓動時,MVC項目會自帶,但這對上述錯誤沒有任何影響。

我找不到任何關於如何做到這一點的例子,我在這裏死路一條?

任何幫助,將不勝感激。

回答

0

最後,我決定採取不同的方法,並使用WCF身份驗證服務在我的不同客戶端之間共享,如本文後Walkthrough: Using ASP.NET Application Services中所述。

這是一個比試圖讓Web矩陣直接在WPF項目中工作的更好的解決方案。

0

你需要做兩件事情來得到這個工作

首先在Global.asax.cs中在的Application_Start的底部()

var attr = new MixThread.Web.Filters.InitializeSimpleMembershipAttribute(); 
    attr.OnActionExecuting(null); 

其次添加這個,添加到您的網站。配置

​​

您應該能夠建立一個基於WCF登錄,像這樣:

[AllowAnonymous] 
public bool Login(string username, string password) 
{ 
    return WebMatrix.WebData.WebSecurity.Login(username, password); 
} 
0

您可能還需要將其添加到您的服務中。

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]