2017-02-13 8 views
0

У меня есть веб-api следующим образом. Когда я называю этот API, это просто ошибки на строке UserManager.CreateAsync. Тот же код работает из метода по умолчанию/register в MVC Web API.UserManager.CreateAsync не работает, но работает из другого фрагмента кода

[Route("settestaccounts")] 
    public async Task<IHttpActionResult> SetTestAccounts(TestAccounts TestAccount) 
    { 
     if ((TestAccount.AccountCount == 0) || (TestAccount.AccountCount < 0) || (!TestAccount.SecretKey.Equals("test"))) 
     { 
      return BadRequest("Please send valid data"); 
     } 

     db = new Entities(); 
     List<string> outLogins = new List<string>(); 

     do 
     { 
      string testLogin = null; // string.Empty; 
      do 
      { 
       string login = string.Format("user{0}@domain.net", GetRandomNumber(1, 10000)); 
       testLogin = (from p in db.AspNetUsers 
          where p.UserName.Equals(login) 
          select p.Id).FirstOrDefault(); 

       if (string.IsNullOrEmpty(testLogin)) 
       { 
        outLogins.Add(login); 
       } 
      } while (testLogin != null); 
     } while (outLogins.Count < TestAccount.AccountCount); 

     foreach (string email in outLogins) 
     { 
      var newAccounts = new AccountController(); 
      var registerAccount = new Models.RegisterBindingModel() 
      { 
       Email = email, 
       FirstName = "test", 
       LastName = "test", 
       Password = "Wadirere123", 
       ConfirmPassword = "Wadirere123", 
       ZipCode = Convert.ToString(94111), 
       RoleName = "User" 
      }; 

      string confkey = ConfigurationManager.AppSettings["ConfirmEmailValidKey"]; 
      var user = new ApplicationUser() { UserName = registerAccount.Email, Email = registerAccount.Email, FirstName = registerAccount.FirstName, LastName = registerAccount.LastName, ZipCode = registerAccount.ZipCode, RegistrationDateTime = DateTime.UtcNow }; 

      var result = await UserManager.CreateAsync(user, registerAccount.Password); 

      var c = result.Errors; 

      // var role = await newAccounts.UserManager.AddToRoleAsync(user.Id, registerAccount.RoleName); 

      //ApplicationUser user = await newAccounts.UserManager.FindByEmailAsync(email.Trim()); 
      //string code = await newAccounts.UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
      //IdentityResult result = await newAccounts.UserManager.ConfirmEmailAsync(user.Id, code); 
      //newAccounts.UpdateDatabaseAndSendWelcomeNotification(user.Id, null, confkey, result); 
     } 

     return Ok(Newtonsoft.Json.JsonConvert.SerializeObject(new OutLogins() { Logins = outLogins })); 
    } 

Я также с помощью мониторинга API и в этом коде это показывает, что есть ошибка 500 внутренний сервер, но не указывает, что ошибка?

ПРИМЕЧАНИЕ. Я вызываю этот API (settestaccounts) из Python-клиента, но API-интерфейс регистров также вызывается из кода Python, и это выполняется отлично.

Любые идеи?

ответ

0

Вы можете проверить неправильность использования ошибки и устранить ее.