调用 MapSignalR 导致协议错误
Call to MapSignalR causes Protocol error
这是我之前在这里提问的后续问题..
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(新标签)的 link 时出现错误..
协议错误:未知传输
我发现这只发生在调用 startup.cs 文件中的 app.MapSignalR() 之后。无法理解为什么自从我遵循的教程工作正常,除非它与跨入另一个控制器有关 link。我在 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 在 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
(和包含其视图的文件夹)重命名为其他名称...
这是我之前在这里提问的后续问题..
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(新标签)的 link 时出现错误..
协议错误:未知传输
我发现这只发生在调用 startup.cs 文件中的 app.MapSignalR() 之后。无法理解为什么自从我遵循的教程工作正常,除非它与跨入另一个控制器有关 link。我在 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 在 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
(和包含其视图的文件夹)重命名为其他名称...