我正在尝试使用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路由并存?
UseMvc
之前放置UseSignalR
,它是否有效?此外,您不应该需要UseWebSockets
-UseSignalR
会为您完成这项工作。 - Pawel