0

AspNet.Core と .NET Framework 4.7.1 を使用して、DotVVM フレームワーク (ver 1.1.9) を使用してアプリを構築しています。ある時点で、リモート ユーザーの IP アドレスを記録する必要があります。ViewModel 内でそれを取得する方法はありますか? 私は多くのチュートリアルを見てきました

プロパティContextを持つ ViewModelBase にプロパティHttpContextがありますが、それは組み込みIHttpContextインターフェイスであり、適切な ではありませんHttpContext

しかし、実際に私が探していたものと思われるプロパティを含む既存のIHttpContextものをキャストできることがわかりました。DotvvmHttpContextOriginalContext

var remoteAddr = ((DotvvmHttpContext)Context.HttpContext).OriginalContext.Connection.RemoteIpAddress;

したがって、問題は、これが「安全な」アプローチであるか、元の AspNet HttpContext またはリモート IP アドレスに直接アクセスするための「適切な」方法があるかということです。

4

2 に答える 2

1

はい、Asp.Net Core でのみアプリケーションを実行する場合、これは安全な方法です。何らかの理由で OWIN ホスティングに切り替えると、無効なキャスト例外がスローされます。

また、Asp.Net Core http コンテキストを取得するためのヘルパー メソッドがあることにも注意してくださいContext.GetAspNetCoreContext().Connection...。ソース コードからわかるように、それは基本的にあなたのコードと同じです:

于 2018-05-01T18:19:46.847 に答える