如何在ASP.NET Core项目中为MVC和SignalR配置路由?

Tho*_*der 4 asp.net-routing signalr asp.net-core-mvc asp.net-core

我正在尝试使用ASP.NET Core 2.1.0-preview1和带有Angular4客户端的ASP.NET Core SignalR 1.0.0-alpha1构建一个Web应用程序.到目前为止,我已经能够搞砸了,实际上可以在客户端内打开SignalR Web套接字连接.然而,这是有代价的,这是我的摘录Startup.cs:

app.UseMvc(routes =>
{
   routes.MapRoute(
      name: "default",
      template: "{controller=Home}/{action=Index}/{id?}");

   /*routes.MapSpaFallbackRoute(
      name: "spa-fallback",
      defaults: new { controller = "Home", action = "Index" });*/
});

app.UseWebSockets();
app.UseSignalR(routes =>
{
   routes.MapHub<Feed>("feed");
});
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我不得不禁用"spa-fallback"路由,如果我不这样做,SignalR将接收纯HTML而不是JSON.当然,缺点是我必须立即输入确切的URL(localhost:12345/home/index例如),这很糟糕.

所以我的问题是,如何让MVC路由和SignalR路由并排?

Paw*_*wel 8

您需要先放置UseSignalR,UseMvc否则后退路由将在添加路由之前注册UseSignalR.