【发布时间】:2018-02-13 19:08:01
【问题描述】:
我正在尝试使用带有 Angular4 客户端的 ASP.NET Core 2.1.0-preview1 和 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");
});
如您所见,我必须禁用“spa-fallback”路由,如果我不这样做,SignalR 将收到纯 HTML 而不是 JSON。当然,这样做的缺点是我现在必须输入确切的 URL(例如localhost:12345/home/index),这很糟糕。
所以我的问题是,如何让 MVC 路由和 SignalR 路由并存?
【问题讨论】:
-
把
UseSignalR放在UseMvc之前有用吗?此外,您不需要UseWebSockets-UseSignalR为您执行此操作。 -
是的,这也是我同时提出的。感谢您提供有关网络套接字的指针!
标签: asp.net-core signalr asp.net-core-mvc asp.net-routing