【问题标题】:Using SignalR with ASP.NET MVC3将 SignalR 与 ASP.NET MVC3 一起使用
【发布时间】:2011-11-27 12:59:56
【问题描述】:

我正在尝试在应用程序中使用 SignalR 集线器,但目前没有运气。我已经阅读了Scott Hanselman's article,还查看了this 博客文章,其中展示了如何在MVC 中实现它,基本上做同样的事情。不幸的是,我没有运气。在客户端,javascript 似乎工作正常[除了没有发生任何事情],但是当我在代码中放置断点时,它显示正在调用控制器,而不是集线器代码。我使用的代码是这样的:

// Client side javascript:
var hooking;
$(function() {
    // Setup SignalR
    hooking = $.connection.hooking;
    hooking.removeLead = function(ref) {
        $("lead" + ref).remove();
    };
    $.connection.hub.start();
    }
});

// Hooking.cs (placed in application root)
public class Hooking : Hub
{
    public void Submit(string jsonString)
    {
        var serializer = new JavaScriptSerializer();
        var json = serializer.Deserialize<HookingLeadResult>(jsonString);
        Clients.removeLead(json.Ref); // Remove lead from client hooking windows
        // update lead gen
    }
}

当我稍后在代码中出于某种原因调用hooking.submit(resultJson); 时,它会调用我的 HookingController(即当前页面)的 Index 操作。有人知道如何正确调用 Hooking.cs 中的 Submit 函数吗?

【问题讨论】:

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


【解决方案1】:

您是否在 firebug 或其他嗅探 http 流量的工具中查看网络流量以确保您没有错误?这可能与路由有关。

另外,您不需要序列化我们为您做的任何事情。只需来回发送对象。

当您在 mvc 应用程序中时,您需要像任何其他静态脚本一样包含中心脚本:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

【讨论】:

  • 干杯,是的,我包含了正确的脚本。 Firebug 显示GET http://localhost:2823/Hooking, POST signalr/negotiate,然后当我的脚本调用“提交”另一个GET http://localhost:2823/Hooking。正是在这一点上,我希望对我在 Hooking.cs 中定义的函数进行一些调用
  • 所有请求都是200?
  • 是的,实际上 chrome 将其标记为错误,但由于某种原因显示“意外响应代码:200”
  • 这是预期的(这是 websocket 请求)。提交请求应如下所示:Hooking/signalr/send
  • 是的,我认为这有点奇怪。提交请求显示为GET http://localhost:2823/Hooking 200 OK 2650ms
【解决方案2】:

这有两个问题 - 1. 出于某种原因,旧版本的 jquery.validate 导致错误,但更新它对此进行了排序。 2. 我试图转换为一个可为空的 int,我猜这是不支持的。我确信有更优雅的方法来解决这个问题,但我只是将我的可为空数据输入转换为字符串,如果不为空则解析它们

【讨论】:

    【解决方案3】:

    jquery.validate.js 是罪魁祸首。由于某种原因它正在触发 GET 请求,并且在排除 js 文件后,SignalR 请求开始触发 POST 请求。也许我应该像 Jordan Wallwork 提到的那样更新它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多