У меня небольшая проблема с моим приложением UWP.Во-первых, приложение UWP имеет следующие возможности:
- Аутентификация предприятия
- Общие пользовательские сертификаты
- Частные сети
- Информация об учетной записи пользователя
Теперь я хочу подключиться к SignalR-Hub в веб-API ASP.NET Core 2.1.Концентратор выглядит так:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.SignalR;
namespace Test.Namespace
{
[Authorize]
public class SyncHub : Hub
{
public void SendUpdate()
{
Clients.All.SendAsync("Update");
}
}
}
А это мой Startup.cs:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Test.Namespace
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSignalR();
services.AddSingleton<IUserIdProvider, NameUserIdProvider>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseSignalR(routes =>
{
routes.MapHub<SyncHub>("/syncHub");
});
app.UseMvc();
}
}
}
Весь API работает на IIS с настроенной аутентификацией Windows.Active Directory работает на том же компьютере.
И вот как приложение UWP вызывает службу:
HubConnection connection = new HubConnectionBuilder().WithUrl("http://Server:81/syncHub", options => {
options.UseDefaultCredentials = true;
}).Build();
await connection.StartAsync();
Этот вызов всегда выдает 401.
Что я делаю не так?Я работаю над этой проблемой более недели и не могу понять, почему она не работает.
Спасибо всем, кто мне поможет:)
Редактировать : Итак, сегодня я попробовал несколько соображений и обнаружил, что это не проблема самого SignalR. Я создал консольное приложение ASP.NET Core с точно таким же вызовом, и все работает отлично.Это также работает, когда я жестко кодирую учетные данные в приложении UWP.Это не работает, только когда я использую «UseDefaultCredentials» в UWP.Я совершенно невежественен.Я перепроверил возможности, но это тоже не помогает.