调用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 () {
            });
    });

调用MapSignalR导致协议错误

我能够复制错误。问题是/SignalR是SignalR本身使用的路由。通过使用名为SignalRController的MVC控制器,现在SignalR和MVC之间存在冲突,导致错误。只需将MVC控制器SignalRController(和包含其视图的文件夹)重命名为其他内容…