调用MapSignalR会导致协议错误

时间:2015-05-29 11:26:21

标签: javascript c# asp.net-mvc signalr

这是我之前提出的问题的后续行动。

MVC - trouble linking to another Controller/Action

正如你所看到的,我最终确实从另一个控制器获取我的视图以显示在新标签中,因此它正常工作。直到我安装SignalR。使用本教程作为指南的简单版本..

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc

在按照创建项目的步骤后,教程工作正常。我要做的唯一工作就是将jquery signalr javascript文件的版本更改为最新版本(这是我没有的版本,因为该教程是在较早的VS 2012中编写的)。

在任何情况下,在对我的网站执行相同的步骤后,当我点击/ SignalR / SRStart(新标签)的链接时,我现在收到错误..

协议错误:未知传输

玩弄我发现这只发生在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);
    }
}

SRStart.cshtml中的javascript

    $(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 () {

            });
    });

任何帮助将不胜感激..

1 个答案:

答案 0 :(得分:1)

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