2015-06-17 72 views
0

我已經有一個MVC ASP.NET應用程序,我在那裏管理身份驗證,使用ASP.NET身份。GetOwinContext通過WCF拋出nullreferenceException

我在應用程序中創建了一個WCF服務,以允許其他應用程序使用我的應用程序提供給他們的服務創建新帳戶。

當我調用WCF服務時,當服務嘗試使用userManager屬性時,我從GetOwinContext()獲取NullReference。

這是我的WCF服務實現:

using Microsoft.AspNet.Identity; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using System.Web; 
using MyCompany.MyProject.Core.Security.Auth; 
using MyCompany.MyProject.Core.Security.Auth.Models; 
using MyCompany.MyProject.MvcWebHost.Services.Contracts; 
using Microsoft.AspNet.Identity.Owin; 
using Microsoft.Owin.Host.SystemWeb; 
using System.ServiceModel; 

public class AuthenticationService : IAuthenticationService 
{ 
    private ApplicationUserManager _userManager; 
    public ApplicationUserManager UserManager 
    { 
     get 
     { 
      return _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
     } 
     private set 
     { 
      _userManager = value; 
     } 
    } 

    public OperationResultDTO CreateUserAccount(UserAccountDTO userDto) 
    { 
     OperationResultDTO result = new OperationResultDTO(); 

     var user = new ApplicationUser(); 
     user.UserName = userDto.Identifier.ToString(); 
     user.Email = userDto.Email; 
     Task<IdentityResult> adminresult = UserManager.CreateAsync(user, userDto.Password); 

     if (adminresult.IsCompleted && adminresult.IsFaulted != false) 
     { 
      result.IsSuccess = true; 
      result.HasError = false; 
     } 
     else 
     { 
      result.IsSuccess = false; 
      result.HasError = true; 
      result.ErrorMessage = "This is an error message!"; 
     } 

     return result; 
    } 
} 

我該怎麼解決呢?

回答

0

不與WCF支持OWIN,你可以在這裏看到,http://owin.org/#projects

如果你仍然想使用OWIN您必須切換到REST或者,如果你想如果我owin下降到使用WCF

+0

下降OWIN ,我應該如何獲得userManager?謝謝! – EstebanLopezB

相關問題