2012-12-15 19 views

答えて

5

最近、SignalRプロジェクト(特にthis one)のコミットを掘り下げて、私はそれを行う方法を見つけました。

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); 
} 
+0

はほとんど意味がありません。ちょうどFYI – davidfowl

+0

@dfowler - 許可 - しかし、私はあなたがGitHub上でこれらの質問を "問題"として提起することを明らかにしてきました。 )。より良い選択肢がありますか? –

+1

githubをこのようなときに使用してください。誰もあなたにここで答えることはできません。 devブランチはあなたが予測できるものではないので、答えは常に間違っていて、私はむしろ一般に公開されていません。 – davidfowl

5

私は自己ホストSignalRハブでそれをしようとしなかったが、SignalR 2.0、Context.Requestで(私が見たものではない、少なくとも)もうItemsを持っていません。私は今、どのように動作するのか把握しました。大衆は、あなたが何を言ってるのか分からないだろうとStackOverflowの上のdevの枝についての質問をします(そのような場合は、三項演算子にもし/他の部分を減らすことができます。)

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; 
} 
+3

もう1つのフォームは 'Context.Request.Environment [" server.RemoteIpAddress "]です。ToString();' –

関連する問題