【问题标题】:How to obtain information from the client computer with SignalR, in asp.net?如何在 asp.net 中使用 SignalR 从客户端计算机获取信息?
【发布时间】:2018-01-02 17:56:35
【问题描述】:

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

但事实证明,当有多台计算机时,我从客户端计算机上的计算机获取相同的名称,即如果我先连接,我正确获取计算机的名称,但是如果我去到另一台计算机时,我会得到连接的第一台 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>

在 HUB 文件中:

 public void BroadcastMessageToNamePC(string pcName)
    {
        Clients.All.getNamePC(pcName);
    }

在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;
    }

目标是,当我打开在生产站点上发布的网页时,我可以获得我的计算机的名称,这是执行这项工作的客户端,如果有人知道,感谢您的帮助。

最好的问候。

【问题讨论】:

  • @MethodMan 可以,但是返回的是发布代码所在机器的名字,是来自web服务器的,我需要客户端的机器。

标签: c# asp.net signalr client-server signalr-hub


【解决方案1】:

我想获取客户计算机的名称

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多