Я использую следующий код для входа в веб-api. Я получаю нулевое исключение ссылки на FormsAuthentication.SetAuthCookie(authUser.UserId.ToString(), false);
звонок. Пожалуйста, руководство меня, что я делаю неправильно ...null ошибка ссылки в task.run async метод
[AllowAnonymous]
[HttpPost]
public async Task<string> SignIn(JObject credentails)
{
string returnVal = "";
await Task.Run(() =>
{
string userName = (string)credentails.SelectToken("Username");
string password = (string)credentails.SelectToken("Password");
UserService userSvc = new UserService(new SqlConnection(_conStr));
var authUser = userSvc.Authenticate(userName, password);
if (authUser != null)
{
FormsAuthentication.SetAuthCookie(userName, false);
HttpContext.Current.Session.Add("DR_CLIENT_ID", authUser.DRClientId);
HttpContext.Current.Session.Add("USER_ID", authUser.UserId);
returnVal = authUser.FullName;
}
else
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent("Invalid Credentials!"),
ReasonPhrase = "Error"
});
}
});
return returnVal;
}
ДОПОЛНЕНО-1 в этом случае значения не является на самом деле нулем, как я могу видеть его в режиме отладки. но когда я удаляю wait Task.Run (() = {}); блок из этого кода, он отлично работает без каких-либо проблем.
, пожалуйста, заново рассмотрите, так как этот вопрос не связан с исключением ссылки на null и является основной нитью и фоновым потоком ... – Leo
Хорошо. В следующий раз, пожалуйста, уточните, что вы все это проверили. Я не мог сказать по вашему вопросу. Кроме того, если есть один закрытый избиратель, используйте @username, чтобы отправить его. –
'HttpContext.Current' будет null внутри задачи, что, вероятно, является причиной вашего исключения NullReferenceException. См. [Этот вопрос] (http://stackoverflow.com/questions/13748267/using-httpcontext-in-async-task) –