Я борюсь с этим какое-то время и не могу заставить его работать.У меня есть 2 приложения, оба работают на Raspberry Pi 2 с Win IoT:
ASP.NET Core 2.1 Web Api - В этом WebApi я использую хост SignalR (опубликован как win8-arm
win10-arm
).
Универсальное приложение для Windows - это приложение будет клиентом, который должен взаимодействовать с хостом и всеми другими клиентами (публикуется как ARM).
Когда я внедряю Web Api в Raspberry, все хорошо.У меня есть тестовое консольное приложение, выступающее в качестве клиента, которое может без проблем подключиться к хосту SignalR. Когда я развертываю приложение UWP и пытаюсь его запустить, оно падает в методе hubConn.Start(...)
HubConnection и возвращаетошибка:
HttpClientException : StatusCode: 405, ReasonPhrase: «Метод не разрешен», Версия: 1.1, Содержимое: System.Net.Http.StreamContent, Заголовки: {Сервер: Kestrel Дата: сб, 02 июня 2018 17:04:15 GMT
Content-Length: 0 Content-Type: text / plain}
Testconsole и UWP используют Microsoft.AspNet.SignalR.Client
(2.2.3) пакет nuget (который является последним).ASP.NET Core 2.1 Web Api использует Microsoft.AspNetCore.App
SDK (2.1.0).
Прочитав этот пост Совместимость версии SignalR (StatusCode: 405 «Метод не разрешен») Мне знаком тот факт, что SignalR не имеет обратной совместимости для обоих хостов как клиентов.Но я ожидаю, что, поскольку я использую последние пакеты и версии nuget, доступные на nuget, все будет работать.
Чего я также не понимаю, так это того, почему Test Console действительно может подключаться кошибок нет, но приложение UWP даже не использует один и тот же пакет nuget клиента SignalR.
Кроме того, я знаю, что пакет ASP.NET Core 2.1 и пакет клиента SignalR - это 2 разных пакета., но я не могу добавить пакет nuget Microsoft.AspNetCore.App
в проект UWP, так как он не совместим с какой-либо платформой win10-arm
.
Есть идеи, как мне установить и запустить соединение?
Обновление вопроса 4 июня 2018 года
Я снял свои более ранние предположения в этом вопросе.Я думал, что приложение Test Console было успешно подключено, но оказалось, что это не так.Разница была в том, что Test Console пыталась подключиться синхронно, но это привело к проглатыванию ошибки.Я проверил состояние соединения с хостом SignalR, которое перешло от «Соединение» к «Отключено».
Все еще остается вопрос: хочу ли я работать с ASP.NET Core 2.1 SignalR, который nugetпакет должен быть включен в мое приложение Test Console, а также в мой проект UWP?
Вот часть кода;все проекты полностью по умолчанию через Файл - Новый проект, а также код ниже.
ASP.NET Core 2.1 Web Api
Startup.cs
public class Startup
{
...
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc();
services.AddSignalR();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseSignalR(route =>
{
route.MapHub<HomeAutomationHost>("/HomeAutomationHost");
});
app.UseMvc();
}
}
Универсальное приложение для Windows
MainPage.xaml.cs
public class MainPage
{
...
public async Task DoConnect()
{
var hubConn = new HubConnection("http://192.168.2.49:5000/HomeAutomationHost", false);
hubConn.EnsureReconnecting();
var signalRHost = hubConn.CreateHubProxy("HomeAutomationHost");
await hubConn.Start(new WebSocketTransport());
}
}