Что не так с моим кодом (VB .NET, асинхронное ожидание и httplistener) - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь запустить httplistener для получения обратного звонка из веб-приложения

Однако никогда не проходит мимо context = Await httpListener.GetContextAsync Я могу telnet к порту слушателя, и он отвечает.

Class SSO
Public Sub AuthorizeAsync()
    Me.oAccessToken = Operations.AuthorizeAsync.Result

End Sub
'
Class Operations
    Shared Async Function AuthorizeAsync() As Task(Of SSO.AccessToken)
        Dim AccessToken As SSO.AccessToken
        Dim AuthorizationCodeTask As Task(Of String)
        Dim cts As New System.Threading.CancellationTokenSource
        AuthorizationCodeTask = Operations.RunCallbackListenAsync(cts.Token)
        Try
            OpenAutorizationUrl()
            Dim t As String
            t = Await AuthorizationCodeTask
            AccessToken = GetAccessToken(t)
        Catch ex As Exception
            logger.LogException(ex)
            Throw ex
        End Try
        Return AccessToken
    End Function
    Private Shared Async Function RunCallbackListenAsync(ByVal cts As System.Threading.CancellationToken) As Task(Of String)
        Dim retval As String = Nothing
        Dim blGo As Boolean = True
        Dim httpListener As New System.Net.HttpListener
        httpListener.Prefixes.Add(My.Settings.APICallBack)
        httpListener.AuthenticationSchemes = System.Net.AuthenticationSchemes.Anonymous
        httpListener.Start()
        If httpListener.IsListening Then
            Dim request As System.Net.HttpListenerRequest
            Dim context As System.Net.HttpListenerContext
            context = Await httpListener.GetContextAsync
            While Not cts.IsCancellationRequested And blGo
                context = Await httpListener.GetContextAsync
                Try
                    If cts.IsCancellationRequested Then
                        context.Response.Abort()
                    End If
                    request = context.Request
                Catch ex As Exception
                    logger.LogException(ex)
                End Try
                blGo = False
            End While
            If Not IsNothing(request) Then
                retval = ProcessRequest(request)
            Else
                Throw New ApplicationException("RunCallbackListenAsync: The request is Nothing")
            End If
            httpListener.Close()
        Else
            Throw New ApplicationException("RunCallbackListenAsync: listener is not listening")
        End If
        Return retval
    End Function
End class

что могло вызвать блокировку на context = Await httpListener.GetContextAsync?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...