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

4
我正在尝试使用ASP.NET Core 2.1.0-preview1和ASP.NET Core SignalR 1.0.0-alpha1构建一个网络应用程序,并使用Angular4客户端。到目前为止,我已经成功地完成了一些工作,实际上可以在客户端内部打开SignalR WebSocket连接。但这是以价格为代价的,以下是我的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");
});

正如您所看到的,我不得不禁用“spa-fallback”路由,如果我不这样做,SignalR将收到普通的HTML而不是JSON。当然,缺点是我现在必须输入精确的URL(例如localhost:12345/home/index),这很糟糕。

那么我的问题是,我如何让MVC路由和SignalR路由并存?


2
如果您在UseMvc之前放置UseSignalR,它是否有效?此外,您不应该需要UseWebSockets - UseSignalR会为您完成这项工作。 - Pawel
是的,这也是我在此期间想到的。感谢您提供有关Web套接字的指针! - Thorsten Westheider
1个回答

10

UseMvc之前加入UseSignalR,否则回退路由将在UseSignalR添加路由之前注册。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接