5

セルフホストのSignalRハブでリモートクライアントのIPアドレスを取得するにはどうすればよいですか?この質問によると、ある時点でContext.ServerVariables []を使用して取得できましたが、それは最新バージョンのSignalRにはないようです。

4

2 に答える 2

6

さて、SignalRプロジェクト(特にこれ)の最近のコミットをざっと見て、私はそれを行う方法を見つけました。

protected string GetIpAddress()
{
    var env = Get<IDictionary<string, object>>(Context.Request.Items, "owin.environment");
    if (env == null)
    {
        return null;
    }
    var ipAddress = Get<string>(env, "server.RemoteIpAddress");
    return ipAddress;
}

private static T Get<T>(IDictionary<string, object> env, string key)
{
    object value;
    return env.TryGetValue(key, out value) ? (T)value : default(T);
}
于 2012-12-15T05:13:31.170 に答える
5

セルフホストのSignalRHubで試してみませんでしたが、SignalR 2.0ではもうありません(少なくとも私が見たものではありません)Context.RequestItems私はそれが今どのように機能するかを理解しました。(必要に応じて、if / else部分を三項演算子に減らすことができます。)

protected string GetIpAddress()
{
    string ipAddress;
    object tempObject;

    Context.Request.Environment.TryGetValue("server.RemoteIpAddress", out tempObject);

    if (tempObject != null)
    {
        ipAddress = (string)tempObject;
    }
    else
    {
        ipAddress = "";
    }

    return ipAddress;
}
于 2013-11-27T08:01:14.637 に答える