我有一個獲取向Azure WebApps上承載的ASP.NET 5應用程序發送請求的客戶端的IP地址的問題。在IIS後面的Azure WebApps上部署ASP.NET 5
我的項目使用ASP.NET 5 + MVC6並在完整的CLR運行時(不是CoreCLR)上運行。我已經通過網絡搜索了答案,但還沒有找到任何解決方案。
從Get the client's IP address 使用sugggestion我已經試過:
HttpContext.Connection.RemoteIpAddress
但HttpContext.Connection屬性都是有誤或無效,因此在這裏沒有運氣。
我注意到了以下幾點:當我通過Visual Studio使用IIS Express運行我的應用程序時,IP從Connection.RemoteIpAddress
可用。 當我通過命令行運行dnx web時,屬性爲空。似乎azure在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
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseIISPlatformHandler();
//rest of the method...
}
我已經回答了這個問題(IIS /紅隼)的第一部分。關於客戶端IP,包Microsoft.AspNet.IISPlatformHandler和中間件UseIISPlatformHandler()應該根據https://github.com/aspnet/Templates/issues/189轉發客戶端IP。你確定要使用它嗎? –
這會重定向本地實例上的IP,但不會在部署的Azure網站上重定向。 –