3

更新: 切换到 IIS Express 而不是 Visual Studio 开发服务器修复了 501 错误。

我试图让 SignalR 在我的 MVC4 应用程序中工作,但我遇到了一个奇怪的 501 错误。我遵循了几个不同的教程,但结果总是一样的。

任何帮助,将不胜感激。

我正在使用 Visual Studio 2012 Pro RC,并通过包管理器控制台安装了 SignalR 0.5.1。

我的代码:

布局

<script src="~/Scripts/jquery-1.7.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-0.5.1.js" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/signalr/hubs")"></script>

看法

<script type="text/javascript">
$(function () {

    // capture the client IP
    var clientIp = $("#clientip").val();

    // create the SignalR proxy
    var userlink = $.connection.userlink;

    // create our callback for the proxy
    userlink.updateViewCount = function (message) {
        $('#view-updates').html('<p>' + message + '</p>');
    };

    // Start the connection
    $.connection.hub.start(function () {
        // send our 'record' message to the hub
        userlink.recordView(clientIp);
    });

});
</script>

<input type="hidden" id="client-ip" value="@ViewBag.ClientIpAddress" />
<div id="view-updates"></div>

集线器类

public class UserLink : Hub
{
    public void RecordView(string IpAddress)
    {
        QContext db = new QContext();
        db.SiteVisits.Add(new SiteVisit { CreateDate = DateTime.Now, IpAddress = IpAddress });
        db.SaveChanges();

        int userCount = db.SiteVisits.Count();

        string result = string.Format("There have been {0} visits to this page.", userCount);

        Clients.updateViewCount(result);
    }
}

我收到的错误

Failed to load resource: the server responded with a status of 501 (Not Implemented) http://localhost:58361/signalr/hubs
Uncaught TypeError: Cannot set property 'updateViewCount' of undefined 
4

3 回答 3

0

如果您还没有解决这个问题,我认为您可能需要这样做:

[HubName("userlink")]
public class UserLink : Hub
{
   // Implementation
}

顺便说一句,如果您的站点中有 /Signalr 文件夹,这可能是导致 501 的原因。这会导致与~/signalr/hubs使用内置 Visual Studio Web 服务器的 javascript 引用发生冲突,但在 IISExpress 中可以正常工作。

于 2012-06-18T15:30:54.770 回答
0

在 IIS 而不是 Visual Studio 开发服务器中进行调试可以解决这个问题,但我不知道为什么。现在我很好奇是否有人知道为什么它会在一个而不是另一个中起作用。

于 2012-06-18T19:49:59.027 回答
0

对原始问题没有必要有用,但其他到达这里的问题,如果使用SignalR 0.5.x 版本并安装了 Visual Studio MVC 工具,可能会发生冲突。

VS 工具和 SignalR 之间存在已知的冲突,该冲突将很快得到修复。

只需
Microsoft ASP.NET MVC 3 & 4 - Visual Studio 2010 Tools

Control Panel\Programs\Programs and Features

于 2012-07-31T23:26:53.793 回答