我有一个使用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>