Azure WebApps でホストされている ASP.NET 5 アプリケーションに要求を送信したクライアントの IP アドレスを取得する際に問題があります。
私のプロジェクトは ASP.NET 5 + MVC6 を使用し、完全な CLR ランタイム (CoreCLR ではない) で実行されます。答えをネットで検索しましたが、解決策が見つかりませんでした。
Get the client's IP addressからの提案を使用し て試しました:
HttpContext.Connection.RemoteIpAddress
しかし、HttpContext.Connection のプロパティはすべて false または null であるため、ここではうまくいきません。
次のことに気付きました: IIS Express を使用して Visual Studio 経由でアプリを実行すると、からの IPConnection.RemoteIpAddress
が利用可能です。コマンドラインからdnx webを実行すると、プロパティが null になります。Azure は、IIS ではなく、dnx でアプリを実行しているようです。
私の質問は、 プロジェクトを構成して Azure WebApps にデプロイする方法です。そのため、IIS の背後で実行されるため、HttpContext.Connection の値が満たされますか?
現在の構成 (project.json の抜粋):
(...)
"compilationOptions": {
"emitEntryPoint": true
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { }
},
(...)
および Startup.cs の Configure メソッド
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseIISPlatformHandler();
//rest of the method...
}