MVC在服务器/信号/集线器上不起作用



我有一个使用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未找到,但没有运气

尝试在包含静态资源时使用helper:

<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>

最新更新