ASP.NET MVC 5 WEB API,具有单独的用户帐户身份验证

时间:2014-06-18 11:32:47

标签: asp.net-mvc-5 asp.net-web-api2

enter image description here我是ASP.NET MVC 5和WebAPI 2技术的新手。我目前正在为我的桌面应用程序开发Web服务。

我在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。

我转移了#34; AccountBindingModels.cs"和" AccountViewModels.cs"从WEB中的Models文件夹到CORE中的POCO文件夹,运行程序后我收到错误" POST / api / account / register 500(内部服务器错误)"和"尝试创建类型为' AccountController'的控制器时发生错误。 &#34 ;.

我想添加将由个人用户帐户验证的api控制器和模型类。请帮忙。让我知道你还需要知道什么。提前谢谢。

来自 UnityConfig.cs 文件的代码

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;
    }     

1 个答案:

答案 0 :(得分: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;
    }