我在获取向 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 运行我的应用程序时,IP fromConnection.RemoteIpAddress
可用。当我通过命令行运行dnx web时,属性为空。似乎天蓝色在 dnx 上运行我的应用程序,而不是 IIS。
所以我的问题是: 如何配置项目并将其部署到 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...
}