C# 在asp.net中,如何使用SignalR从客户端计算机获取信息?

C# 在asp.net中,如何使用SignalR从客户端计算机获取信息?,c#,asp.net,signalr,client-server,signalr-hub,C#,Asp.net,Signalr,Client Server,Signalr Hub,我需要你的帮助。事实证明,通过signar,我试图从服务器获取客户机的信息,在这种情况下,我想获取客户机的名称 但事实证明,当有多台计算机时,我会从客户端计算机上的计算机获得相同的名称,也就是说,如果我先连接,我会正确获得计算机的名称,但如果我转到另一台计算机,我会获得连接的第一台PC计算机的名称,而不是显示真实的计算机 我的代码来自连接到windform应用程序的web应用程序(服务器)。我向您展示代码: $(document).ready(function () { var myH

我需要你的帮助。事实证明,通过signar,我试图从服务器获取客户机的信息,在这种情况下,我想获取客户机的名称

但事实证明,当有多台计算机时,我会从客户端计算机上的计算机获得相同的名称,也就是说,如果我先连接,我会正确获得计算机的名称,但如果我转到另一台计算机,我会获得连接的第一台PC计算机的名称,而不是显示真实的计算机

我的代码来自连接到windform应用程序的web应用程序(服务器)。我向您展示代码:

$(document).ready(function () {

    var myHub = $.connection.myHub;
    myHub.client.getNamePC = function (pcName) {
        $('#NamePC').val(pcName);
    }
    $.connection.hub.url = "http://localhost:50684/signalr";
    $.connection.hub.start().done(function () {
        $('#btnSubmit').click(function (e) {
            myHub.server.broadcastMessageToNamePC("Esperando Solicitud Nombre Equipo");
        });
    }).fail(function (error) {
        console.error(error);
    });

});

<div>
<input type="text" id="NamePC" />
<input type="submit" id="btnSubmit" value="Get Name PC" />
</div>
在windform客户端应用程序中:

public partial class Form1 : Form
{
    HubConnection hubConnection;
    IHubProxy hubProxy;
    public Form1()
    {

        InitializeComponent();

        IncializaSignalR();
        hubConnection.Closed += IncializaSignalR;
        hubConnection.Start().Wait();
    }
    private void IncializaSignalR()
    {
        try
            {
        String dirServer= "https://ejemplo.cl"

        hubConnection = new HubConnection(dirServer + "/signalr/hubs");
        hubProxy = hubConnection.CreateHubProxy("MyHub");
        CheckForIllegalCrossThreadCalls = false;


        hubProxy.On<String>("getNamePC ", (pcName) =>
        {                
                namePc();
                hubConnection.Stop();
                hubConnection.Closed += IncializaSignalR;
                hubConnection.Start().Wait();

    }

    private string namePc()
    {
        string NamePC_client= System.Environment.MachineName;
        if (hubProxy != null)
        {
            hubProxy.Invoke("BroadcastMessageToNamePC", pcName);

        }
        return NamePC_client;
    }
公共部分类表单1:表单
{
轮毂连接轮毂连接;
ihubbroxy-hubbroxy;
公共表格1()
{
初始化组件();
incalizasignalr();
hubConnection.Closed+=初始化信号;
hubConnection.Start().Wait();
}
私有无效incalizasignalr()
{
尝试
{
字符串dirServer=”https://ejemplo.cl"
hubConnection=新的hubConnection(dirServer+“/signalr/hubs”);
hubProxy=hubConnection.CreateHubProxy(“MyHub”);
CheckForIllegalCrossThreadCalls=false;
hubProxy.On(“getNamePC”,(pcName)=>
{                
namePc();
hubbonnection.Stop();
hubConnection.Closed+=初始化信号;
hubConnection.Start().Wait();
}
私有字符串namePc()
{
字符串NamePC\u client=System.Environment.MachineName;
if(hubProxy!=null)
{
调用(“BroadcastMessageToNamePC”,pcName);
}
返回NamePC_客户端;
}
目标是,当我打开发布在生产网站上的网页时,我可以得到我的计算机的名称,这是这项工作的客户端,如果有人知道,我们将感谢您的帮助

致以最良好的祝愿

我想知道客户计算机的名称


通常情况下这是不可能的。也许你可以使用ActiveX和某种插件来检索它,但通常你无法获取这些信息。你可以使用Javascript获取有关浏览器或IP地址的信息,但你无法获取计算机名。这将是一个安全问题。

@MethodMan是的,但它会返回计算机名重新发布的代码来自,它来自web服务器,我需要客户端的机器。
public partial class Form1 : Form
{
    HubConnection hubConnection;
    IHubProxy hubProxy;
    public Form1()
    {

        InitializeComponent();

        IncializaSignalR();
        hubConnection.Closed += IncializaSignalR;
        hubConnection.Start().Wait();
    }
    private void IncializaSignalR()
    {
        try
            {
        String dirServer= "https://ejemplo.cl"

        hubConnection = new HubConnection(dirServer + "/signalr/hubs");
        hubProxy = hubConnection.CreateHubProxy("MyHub");
        CheckForIllegalCrossThreadCalls = false;


        hubProxy.On<String>("getNamePC ", (pcName) =>
        {                
                namePc();
                hubConnection.Stop();
                hubConnection.Closed += IncializaSignalR;
                hubConnection.Start().Wait();

    }

    private string namePc()
    {
        string NamePC_client= System.Environment.MachineName;
        if (hubProxy != null)
        {
            hubProxy.Invoke("BroadcastMessageToNamePC", pcName);

        }
        return NamePC_client;
    }