MVC无法在服务器/信号器/集线器上运行

时间:2015-08-30 05:25:53

标签: asp.net-mvc signalr

我有一个使用SignalR的项目(使用来自https://gkulshrestha.wordpress.com/2014/05/02/signalr-with-sql-server-query-notification/的教程) 当我从visual studio运行它时,我的项目完美运行。但是,当我在服务器上运行它(在发布它和IIS之后)时,它不起作用。

具体来说,我发现JS的某个部分没有运行。 我有

@section Scripts{
    <script src="/Scripts/jquery.signalR-2.1.1.js"></script>
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="/signalr/hubs"></script>
    <script type="text/javascript">
        $(function () {
            // Reference the auto-generated proxy for the hub.
            alert(1);
            var clientHub = $.connection.messageSender;
            alert(5);
            // Create a function that the hub can call back to display messages.
            clientHub.client.broadcastMessage = function (message) {
                // Add the message to page.
                $('#messagecontainer').append('<li>' + message + '</li>');
            };
            alert(2);
            $.connection.hub.start().done(function () {
                alert("connection started")
            }).fail(function (e) {
                alert(e);
            });
            alert(3);

        });

    </script>
}

通过visual studio运行时,我点击了这里的所有警报。在服务器上运行它时(按下Browse),我只点击alert(1)而没有其他任何一个。

任何帮助将不胜感激!谢谢!

[编辑] 我环顾四周,我怀疑它与我的信号器/集线器参考有关。我已经尝试了SignalR /signalr/hubs 404 Not Found上的所有内容,但没有运气。

1 个答案:

答案 0 :(得分:2)

在包含静态资源时尝试使用帮助程序:

<script src="@Url.Content("~/Scripts/jquery.signalR-2.1.1.js")"></script>

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

这将考虑您的应用程序可能在IIS中运行的虚拟目录。此外,如果您使用的是最新的Razor,您可以使用~前缀来表示相对路径:

<script src="~/Scripts/jquery.signalR-2.1.1.js"></script>

<script src="~/signalr/hubs"></script>
相关问题