C# 信号员可能不在.NET 5中工作?无法解析类型为';Microsoft.AspNetCore.signer.IHubContext`1[iBet.Server.Hubs.ChatHub]';
我正在尝试在.NET5和Angular 10应用程序中设置聊天,但到目前为止,后端部分使我处于停顿状态。每当我尝试访问聊天室控制器时,我都会C# 信号员可能不在.NET 5中工作?无法解析类型为';Microsoft.AspNetCore.signer.IHubContext`1[iBet.Server.Hubs.ChatHub]';,c#,.net,asp.net-core,signalr,C#,.net,Asp.net Core,Signalr,我正在尝试在.NET5和Angular 10应用程序中设置聊天,但到目前为止,后端部分使我处于停顿状态。每当我尝试访问聊天室控制器时,我都会 System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.SignalR.IHubContext`1[iBet.Server.Hubs.ChatHub]' while attempting to activate 'iBet.Serv
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.SignalR.IHubContext`1[iBet.Server.Hubs.ChatHub]' while attempting to activate 'iBet.Server.Controllers.ChatController'.
这是控制器本身:
[Produces("application/json")]
public class ChatController : ApiController
{
private readonly IHubContext<ChatHub> _hubContext;
public ChatController(IHubContext<ChatHub> hubContext)
{
_hubContext = hubContext;
}
[Route("send")]
[HttpPost]
public IActionResult SendRequest([FromBody] MessageRequest message)
{
_hubContext.Clients.All.SendAsync("ReceiveOne", message.User, message.MessageText);
return Ok(message.MessageText);
}
}
[产生(“应用程序/json”)]
公共类聊天控制器:ApiController
{
私有只读IHubContext\u hubContext;
公共聊天控制器(IHubContext hubContext)
{
_hubContext=hubContext;
}
[路线(“发送”)]
[HttpPost]
公共IActionResult SendRequest([FromBody]MessageRequest message)
{
_hubContext.Clients.All.SendAsync(“ReceiveOne”,message.User,message.MessageText);
返回Ok(message.MessageText);
}
}
这是我的创业公司:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseCors(options => options
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<ChatHub>("/chatsocket");
});
}
public void配置服务(IServiceCollection服务)
{
services.AddControllers();
services.AddSignalR();
}
//此方法由运行时调用。使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
//默认的HSTS值为30天。您可能希望在生产场景中更改此值,请参阅https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseCors(选项=>options
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
app.UseRouting();
app.UseEndpoints(端点=>
{
endpoints.MapControllers();
endpoints.MapHub(“/chatsocket”);
});
}
据我所知,一旦您将services.AddSignalR()放入;它负责DI,但在.NET 5中似乎有所不同,任何建议都将不胜感激。发现了问题,基本上该代码所在的整个项目都是一个微服务项目,聊天室所在的微服务使用的是.NET core 5预览版,而不是5.0.1或其他稳定版本,有一次我用5.0.1做了一个新项目,信号员工作得很好。发现问题,基本上这段代码所在的整个项目都是一个微服务项目,聊天的微服务使用的是.net core 5预览版,而不是5.0.1或其他稳定版本,有一次我用5.0.1做了一个新项目,信号器工作得很好。