Клиенты. Все, Клиенты. Вызов и Клиенты. Другие, выбрасывающие исключение TypeLoadException
У меня есть простая настройка Typed Hub через интерфейс. Я могу успешно подключиться к SignalR Hub.
namespace POC.WebSocket
{
public class ApiResultHub : Hub<IApiResultHubClient>
{
public async Task SendMessage(string user, string message)
{
await Clients.All.ReceiveMessage(user, message);
}
public override Task OnConnectedAsync()
{
Clients.Caller.ReceiveMessage("newUser", $"{Context.ConnectionId}");
return base.OnConnectedAsync();
}
}
}
Однако, когда я пытаюсь вызвать метод-концентратор на стороне клиента, он выдает следующее исключение:
Вот мои другие файлы классов: Startup.cs
namespace POC.WebSocket
{
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.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("https://localhost:44324", "https://localhost:44326")
.AllowCredentials();
}));
services.AddSignalR();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// 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.UseCors("CorsPolicy");
app.UseSignalR(routes =>
{
routes.MapHub<ApiResultHub>("/apiResult");
});
app.UseHttpsRedirection();
app.UseMvc();
}
}
}
IApiResultHubClient`T.cs
namespace POC.Common
{
public interface IApiResultHubClient
{
Task ReceiveMessage(string user, string message);
Task SendApiResponse<T>(ApiResult<T> data);
}
}
Кто-нибудь еще видел эту проблему? Я видел несколько подобных проблем с возможностью подключения к самому концентратору. Однако, как уже упоминалось, я могу успешно подключиться к концентратору, но не могу разрешить Clients.All, Clients.Caller или Clients.Others.
Все библиотеки обновлены сегодня:
.Net Core версия 2.1.4 .Net SignalR Core версия 1.0.3
Исправления: Найдены детали исключения:
Метод 'SendApiResponse' в типе 'Microsoft.AspNetCore.SignalR.TypedClientBuilder.IApiResultHubClientImpl' из сборки 'Microsoft.AspNetCore.SignalR.TypedClientBuilder, Version=0.0.0.0, культура = нейтральная, PublicKeyToken=null = null.