У меня есть веб-сервис REST (asp. net core 2.2 c#), и я звоню из приложения asp. net (веб-форма в VB. net) ,
Название не очень точное: я получаю значение из своего веб-сервиса, но метод, предшествующий тому, который вызывает веб-метод, не возвращает возвращаемое значение. Итак, у меня есть:
- метод1 вызов метода2
- метод2 вызов метода3
- метод3 вызов webmethod
- method3 получить возвращаемое значение из webmethod
- method2 ничего не получает
- method1 ничего не получает ни
Если я удалю вызов веб-службы из моего method3 и напрямую верну новый объект ApiReturn в method2, method2 и method1 получает значение так, как должно (на самом деле метод не получает значение
Я очень новичок в мире веб-сервисов REST, поэтому я понятия не имею ... не могли бы вы мне помочь? Это мой код:
Метод 1: BtnTestAnything_Click
Protected Sub BtnTestAnything_Click(sender As Object, e As EventArgs)
Dim currentQuote As Quote = New Quote With {
.NumberEpt = 13245,
.Origin = "DM")
LoemailApi.RunAsync(currentQuote).GetAwaiter().GetResult()
End Sub
Метод 2: RunAsyn c и Method3: SendEmailToProviderAsyn c
Friend Class LoemailApi
Public Shared Async Function RunAsync(myQuote As Quote) As Task(Of ApiReturn)
client.BaseAddress = New Uri("loemail_api_uri")
client.DefaultRequestHeaders.Accept.Clear()
client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("loemail_api_media"))
client.DefaultRequestHeaders.AcceptCharset.Clear()
client.DefaultRequestHeaders.AcceptCharset.Add(New StringWithQualityHeaderValue("loemail_api_charset"))
Dim ret = Await SendEmailToProviderAsync(myQuote)
' I NEVER GET HERE EXCEPT WHEN I REMOVE THE CALL client.PostAsJsonAsync() TO WEB-METHOD IN SendEmailToProviderAsync()
Console.WriteLine(ret)
Return ret
End Function
Private Shared Async Function SendEmailToProviderAsync(ByVal quote As Quote) As Task(Of ApiReturn)
Dim response As HttpResponseMessage = Await client.PostAsJsonAsync("api/providersSend", quote).ConfigureAwait(False)
response.EnsureSuccessStatusCode()
Dim ret As ApiReturn = New ApiReturn()
If (response.IsSuccessStatusCode) Then
ret = Await response.Content.ReadAsAsync(Of ApiReturn)()
End If
' HERE I HAVE A VALUE IN ret, ACCORDINGLY TO WHAT MY WEBSERVICE RESPOND
Return ret
End Function
End Class
Любой комментарий к моему коду, который поможет мне улучшить кстати, можно только приветствовать.
Большое спасибо!