2014-06-18 102 views
3

enter image description here我是新來的ASP.NET MVC 5和WebAPI 2技術。我目前正在爲我的桌面應用程序開發Web服務。ASP.NET MVC 5 WEB API與個人用戶帳戶認證

我在asp.net mvc 5 web API 2中開發了具有個人用戶帳戶身份驗證的Web服務。我參考鏈接: - 「http://vod.com.ng/en/video/KyxcLfz_CW8/8-Authenticated-WebAPI-ASPNET-MVC-5-Fundamentals-5-WebAPI-2」。它幫助了我,但我需要在項目中添加圖層,即WEB和CORE。

我運行程序後,將WEB中的Models文件夾中的「AccountBindingModels.cs」和「AccountViewModels.cs」轉移到CORE中的POCO文件夾中我收到錯誤「POST/api/account/register 500(Internal Server Error) 「和」嘗試創建類型爲'AccountController'的控制器時發生錯誤「。

我想添加api控制器和模型類,這些類將由個人用戶帳戶進行驗證。請幫忙。讓我知道你還需要知道什麼。提前致謝。從UnityConfig.cs

CODE文件

public static void RegisterTypes(IUnityContainer container) 
{ 
    container.RegisterType(typeof(IRepository<>), typeof(Repository<>)); 

    container.RegisterType(typeof(DbContext), typeof(DataContext)); 
} 

控制器

namespace DesktopApp.Controllers 
{ 
public class StudentLoginController : ApiController 
{ 
    private IRepository<StudentLogin> _StudentLoginRepository; 
    public StudentLoginController(IRepository<StudentLogin> StudentLoginRepository) 
    { 
     _StudentLoginRepository = StudentLoginRepository; 
    } 

    [HttpPost] 
    [Route("api/StudentLogin/Post")] 
    public StudentLogin Post(StudentLogin loginData) 
    { 
     var studentLoginDetails = _StudentLoginRepository.GetAll().Where(p =>  p.studentName == loginData.studentName && p.studentPassword == loginData.studentPassword).FirstOrDefault<StudentLogin>(); 
     return studentLoginDetails; 
    }  
+0

你的問題有點模糊。你能否發佈適當的代碼片段?順便說一下,我不會將視圖模型移動到另一個圖層,因爲它們與UI相關,所以將它們留在該圖層中是一個好主意。 –

+0

如何解決您的依賴關係?沒有看到你的實際注入,很難說出了什麼問題。也許[這個線程](http://stackoverflow.com/questions/21927785/configure-unity-di-for-asp-net-identity)可以幫助你一點點。 –

+0

感謝您的幫助。是的,我將視圖模型移至同一圖層。但我已經在另一層Core - > POCO中添加了模型類。我正在使用Unity的依賴注入。我認爲在解決控制器的依賴性方面存在任何問題。我想我已經爲控制器添加了手動依賴關係解析器。我已經添加了上面的圖像。 – Rushee

回答

3

通過創建默認的AccountController和刪除參數的AccountController解決的問題。

public UserManager<IdentityUser> UserManager { get; private set; } 
    public ISecureDataFormat<AuthenticationTicket> AccessTokenFormat { get; private set; } 

    public AccountController()    
    { 
     UserManager = Startup.UserManagerFactory(); 
     AccessTokenFormat= Startup.OAuthOptions.AccessTokenFormat; 
    } 
相關問題