Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

ASP.NET Identity 2.0 - Aanmaken gebruiker lukt niet

Pagina: 1
Acties:

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 20-11 13:18
Goedemorgen,

Ik heb een probleem met ASP.NET identity 2.0 en ik kom er niet uit wat er mis gaat. In de applicatie wil ik een gebruiker aanmaken, echter blijft deze hangen en wordt de gebruiker nimmer aangemaakt.

Ik gebruik onderstaande code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Class ApplicationUser
    Inherits Microsoft.AspNet.Identity.EntityFramework.IdentityUser

    Public Property CreateDate As DateTime
End Class

Public Class RHIdentityDBContext
    Inherits Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext(Of ApplicationUser)

    Public Sub New()
        MyBase.New("RHDatabase")
    End Sub
End Class

===========
Dim RHUser As New EFRepository.RHIdentity()
RHUser.UserName = UserName

Dim RHUserManager As New Microsoft.AspNet.Identity.UserManager(Of EFRepository.RHIdentity)(New Microsoft.AspNet.Identity.EntityFramework.UserStore(Of EFRepository.RHIdentity)(New EFRepository.RHIdentityDBContext))

'//Hier blijft hij hangen
'//Ik heb de 'Await' eruit gehaald om te kijken of hij het dan wel doet, maar dan nog blijft hij op deze regel hangen, er komt geen foutmelding
Dim result = RHUserManager.CreateAsync(RHUser, "testwachtwoord").Result


Wanneer ik echter een andere functie van ASP.Net Identity pak, zoals onderstaande code, dan voert hij deze wel uit.
code:
1
Dim test = Await RHUserManager.FindByNameAsync()


Hoe kan ik er nu achter komen waarop de functie CreateAsync blijft hangen?

[ Voor 15% gewijzigd door Phenomenon op 30-10-2014 10:15 . Reden: DBContent en Applicationuser definitie toegevoegd ]


  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 20-11 23:40
Je roept .Result aan, wat de thread blokkeert. Dit resulteert in een deadlock omdat je UI thread geblokkeerd wordt, en je taak zal proberen het resultaat hierop te returnen.

Je hebt 2 manieren om dit op te lossen:

1) (De voorkeursmethode): je thread niet blokkeren door .Result, .Wait() of soortgelijke functies aan te roepen. In plaats daarvan alles gewoon awaiten en je hele chain van A tot Z async maken. In het geval van ASP.NET MVC kun je gewoon een async Task<ActionResult> actionmethod hebben dus dat is geen probleem.
2) Je async-code van .ConfigureAwait(false) voorzien zodat het werk op een thread uit de threadpool wordt uitgevoerd ipv op de geblokkeerde UI thread. Dit heeft een aantal nadelen (context switching, synchronisatie, ontbreken van je thread context zoals de CurrentCulture), maar is een makkelijke manier om async-code synchroon uit te voeren.

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 19-11 18:15

Sebazzz

3dp

In het geval van dit framework kent de UserManager class synchrone extension methods zodat je je daarmee niet druk hoeft te houden. Zie MSDN: MSDN: UserManagerExtensions.Create(TUser, TKey) Method (UserManager(TUser, TKey), TUser, String) (Microsoft.AspNet.Identity)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]