![](/img/trans.png)
[英]How to overcome Waiting for Available Socket (SignalR, C#, ASP.NET WebForms)?
[英]SignalR in ASP.NET WebForms
在我的一个项目中,我需要使用SignalR库。 所以我决定创建一个简单的应用程序来检查它是如何工作的。 我根据一些教程创建了这个应用程序,这些教程展示了如何编写聊天室。
唯一的区别是我的项目是WebForms,我也使用ASP.NET控件。
这是我到目前为止所做的:
我安装了SignalR
我创建了ChatHub
文件:
ChatHub.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace SignalRTest
{
public class ChatHub : Hub
{
public void sendMessage(string msg)
{
Clients.All.addMessage(msg);
}
}
}
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="Scripts/jquery-1.10.2.min.js"></script> <script src="Scripts/jquery.signalR-2.2.0.min.js"></script> <script src="/signalr/hubs"></script> <script type="text/javascript"> $(function () { var chat = $.connection.chatHub; chat.client.addMessage = function (msg) { $('#chat_list').append("<li>" + msg + "</li>"); }; $.connection.hub.start().done(function () { $('#Button1').click(function () { chat.server.sendMessage($('#TextBox1').val()); }); }); }); </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Send" /> </div> <div> <ul id="chat_list"> </ul> </div> </form> </body> </html>
Startup.cs
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRTest.Startup))]
namespace SignalRTest
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我设置断点并点击Send按钮激活服务器上的sendMessage方法,并在客户端激活addMessage JS功能。 但问题出在这里:
当我向其他用户发送内容时,他可以在<ul></ul>
元素中看到该消息。 但不是我。 然后,当他向我发送回复时,我可以看到它,但他的清单被清除了。
它可以由ASP控件引起吗?
我不确定我是否以最佳方式获得对这些控件的引用。
PS。 抱歉格式不正确但我无法处理C#代码。
您的问题是您希望您的按钮既运行服务器端又触发您的JavaScript代码。
<asp:Button ID="Button1" runat="server" Text="Send" />
runat="server"
位意味着您将看到页面刷新,因为应用程序将尝试运行服务器端代码,因此消息将清除。
如果你在普通的html元素上运行代码,这段代码应该可以正常工作。
IE适用于:
<input ID="Button1" type="button" value="Send" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.