我有一个使用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上的所有内容,但没有运气。
答案 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>