Клиенту SignalR не удается подключиться в Xamarin FormsC#

Место общения программистов C#
Ответить
Anonymous
 Клиенту SignalR не удается подключиться в Xamarin Forms

Сообщение Anonymous »

У меня есть проект Xamarin Forms и веб-служба ASP.Net Core. Я использую расширение Conveyor by Keyoti Visual Studio для доступа к веб-сервису с моего устройства Android. Когда я вызываю HubConnection.StartAsync();, из переопределения клиента Xamarin Task OnConnectedAsync() вызывается в веб-службе Chathub, но соединение с клиентом Xamarin Forms не удается, выдавая исключение «Операция была отменена» .
Когда OnConnectedAsync() вызывается на стороне сервера, это должно означать, что соединение установлено, но происходит сбой на стороне Xamarin и состояние HubConnection имеет значение все еще отключен.
Я установил следующие пакеты Nuget:
Microsoft.AspNetCore.SignalR.Client v8.0.5 Для Клиента Xamarin Forms
Microsoft.AspNetCore.SignalR.Core v1.1.0 Для ASP.Net Core Server
Вот мой код Xamarin Forms:

Код: Выделить всё

public MainPage()
{
InitializeComponent();

hubConnection = new HubConnectionBuilder()
.WithUrl(url, (opts) =>
{
opts.HttpMessageHandlerFactory = (message) =>
{
if (message is HttpClientHandler clientHandler)
// bypass SSL certificate
clientHandler.ServerCertificateCustomValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; };
return message;
};
})
.WithAutomaticReconnect()
.Build();

hubConnection.On("ReceiveMessage", (user, message) => { var finalMessage = $"{user} says {message}"; });

Connect();
}

async Task Connect()
{
try
{
await hubConnection.StartAsync();  // I get an Exception The operation was cancelled when this is called
}
catch (Exception ex)
{

}
}

async Task SendMessage(string user, string message)
{
try
{
await hubConnection.InvokeAsync("SendMessage", user, message);
}
catch (Exception ex)
{
// send failed
}
}
Вот код моего веб-сервиса ASP.Net Core:

Код: Выделить всё

public class ChatHub : Hub
{
public override Task OnConnectedAsync()
{
// This method is called on server side, but still connection fails on client side
return base.OnConnectedAsync();
}
}

public override Task OnDisconnectedAsync(Exception exception)
{
return base.OnDisconnectedAsync(exception);
}

public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
Я также добавил сервисы.AddSignalR(); и endpoints.MapHub("/chathub"); в Startup.cs . Как я уже упоминал, когда я вызываю HubConnection.StartAsync(); из клиента Xamarin, OnConnectedAsync() вызывается в службе Chathub. Но соединение на стороне клиента не удается, и возникает исключение «Операция была отменена». Любая помощь будет очень признательна.


Подробнее здесь: https://stackoverflow.com/questions/785 ... arin-forms
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»