我可以让这个
tutorial在一个新项目中工作,但不在我现有的项目中。
我的项目是一个ASP.Net MVC 4 Web应用程序,在web.config文件中具有以下属性:
<appSettings> <add key="webpages:Enabled" value="true"/> </appSettings>
这是因为我的应用程序是单页面应用程序,它在客户端使用AngularJS。我的应用程序中唯一的页面是index.cshtml,我已经添加了相关代码为signalR:
<!-- signalR chat --> <script src="~/Scripts/jquery.signalR-1.0.0.js"></script> <!--Reference the autogenerated SignalR hub script. --> <script src="/signalr/hubs"></script> <!--Add script to update the page and send messages.--> <script type="text/javascript"> $(function () { // Declare a proxy to reference the hub. var chat = $.connection.chatHub; // Create a function that the hub can call to broadcast messages. chat.client.broadcastMessage = function (name,message) { // Html encode display name and message. var encodedName = $('<div />').text(name).html(); var encodedMsg = $('<div />').text(message).html(); // Add the message to the page. $('#discussion').append('<li><strong>' + encodedName + '</strong>: ' + encodedMsg + '</li>'); }; // Get the user name and store it to prepend to messages. $('#displayname').val(prompt('Enter your name:','')); // Set initial focus to message input Box. $('#message').focus(); // Start the connection. $.connection.hub.start().done(function () { $('#sendmessage').click(function () { // Call the Send method on the hub. chat.server.send($('#displayname').val(),$('#message').val()); // Clear text Box and reset focus for next comment. $('#message').val('').focus(); }); }); }); </script>
然后我有了ChatHub.cs文件:
public class ChatHub : Hub { public void Send(string name,string message) { // Call the broadcastMessage method to update clients. Clients.All.broadcastMessage(name,message); } }
最后在全球.asax:
protected void Application_Start() { RouteTable.Routes.MapHubs(); BundleConfig.RegisterBundles(BundleTable.Bundles); }
运行应用程序时,不会生成/ signalr / hubs文件。请求文件时,我会收到一个404,并且它在线上崩溃:
chat.client.broadcastMessage = function (name,message) { ....
因为聊天是空的,因为上一行没有找到chatHub:
var chat = $.connection.chatHub;
有人知道我的代码有什么问题吗?
UPDATE
我通过改变行解决了我的问题::
<script src="/signalr/hubs"></script>
至
<script src="~/signalr/hubs"></script>