调用MapSignalR导致协议错误
本文关键字:协议 错误 MapSignalR 调用 | 更新日期: 2023-09-27 17:51:09
这是我上一个问题的后续问题。
MVC -链接到另一个控制器/动作的问题
正如你所看到的,我最终从另一个控制器得到我的视图,显示在一个新的选项卡中,所以它是工作的。直到我安装了SignalR。使用本教程作为指导的简单版本.
http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc在遵循创建项目的步骤后,该教程运行良好。我唯一要做的就是将jquery signalr javascript文件的版本更改为最新版本(这是我没有的版本,因为教程是用旧的VS 2012编写的)。
在任何情况下,按照我的网站相同的步骤后,我现在得到一个错误,当我点击链接/SignalR/SRStart(新选项卡)..
协议错误:Unknown transport
我发现这只发生在startup.cs文件中调用app.MapSignalR()之后。不能理解为什么,因为我遵循的教程工作得很好,除非它有一些东西与交叉到另一个控制器上的链接。在SRStart视图中,我放置了所有的信号连接代码和回调函数,但我不认为它已经达到了,因为页面甚至没有加载。
这是我的代码…
startup.cs
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
app.MapSignalR();
}
}
中心public class SRHub : Hub
{
public void Send(string message)
{
// Call the addNewMessageToPage method to update clients.
var conn = GlobalHost.ConnectionManager.GetHubContext<SRHub>();
conn.Clients.All.addNewMessageToPage(message);
//Clients.All.addNewMessageToPage(message);
}
}
javascript in SRStart.cshtml
$(function () {
// Reference the auto-generated proxy for the hub.
var conn = $.connection.sRHub;
// Create a function that the hub can call back to display messages.
conn.client.addNewMessageToPage = function (message) {
if (!message.contains('[EOF]')) {
populateStreamDialog(message);
}
};
$.connection.hub.start()
.done(function () {
});
});
我能够复制错误。问题是/SignalR
是SignalR本身使用的路由。通过使用名为SignalRController
的MVC控制器,现在SignalR和MVC之间存在冲突,导致错误。只需将MVC控制器SignalRController
(和包含其视图的文件夹)重命名为其他内容…