0

J'ai un problème avec l'obtention de l'adresse IP du client qui a envoyé une requête à une application ASP.NET 5 hébergée sur Azure WebApps.Déployer ASP.NET 5 sur Azure WebApps derrière IIS

Mon projet utilise ASP.NET 5 + MVC6 et s'exécute sur une exécution CLR complète (pas CoreCLR). J'ai cherché à travers le net pour la réponse, mais je n'ai trouvé aucune solution.

En utilisant sugggestion de Get the client's IP address J'ai essayé:

HttpContext.Connection.RemoteIpAddress 

mais les propriétés de HttpContext.Connection sont toutes fausses ou nulle, donc pas de chance ici.

J'ai remarqué ce qui suit: lorsque j'exécute mon application via Visual Studio avec IIS Express, l'adresse IP de Connection.RemoteIpAddress est disponible. La propriété est nulle lorsque je cours dnx web via la ligne de commande. Il semble que azure exécute mon application dans le on dnx, pas IIS.

Ma question est la suivante: Comment configurer et déployer projet Azure WebApps, il va courir derrière IIS et donc HttpContext.Connection aura rempli ses valeurs?

Ma configuration actuelle (extrait de project.json):

(...) 
    "compilationOptions": { 
     "emitEntryPoint": true 
     }, 
    "commands": { 
     "web": "Microsoft.AspNet.Server.Kestrel", 
     "ef": "EntityFramework.Commands" 
     }, 

     "frameworks": { 
     "dnx451": { } 
     }, 
(...) 

et la méthode Configurer des Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseIISPlatformHandler(); 
    //rest of the method... 

} 
+0

J'ai répondu à la première partie de la question (IIS/Kestrel). En ce qui concerne l'adresse IP du client, le package Microsoft.AspNet.IISPlatformHandler et le middleware UseIISPlatformHandler() sont supposés transmettre l'adresse IP du client conformément à https://github.com/aspnet/Templates/issues/189. Êtes-vous sûr de l'utiliser? –

+0

Cela redirige l'adresse IP sur mon instance locale, mais pas sur le site Web Azure déployé. –

Répondre

2

Azure Web App utilise toujours IIS. Toutefois, pour le code ASP.NET 5, IIS est configuré pour utiliser HttpPlatformHandler pour rediriger les demandes vers Kestrel, le serveur Web ASP.NET 5. C'est la manière d'exécuter l'application ASP.NET 5 à partir d'ASP.NET Beta 8. Vous verrez cette configuration en ouvrant votre fichier web.config.

Références:

Il y a quelques questions en suspens liées à l'obtention d'adresse IP du client lors de l'utilisation Kestrel, et ils semblent être résolus dans la version RC2:

+0

J'utilise RC1-final –

+0

Ensuite, vous avez le comportement post beta8 que j'ai décrit: IIS est utilisé comme un proxy inverse pour envoyer des demandes à Kestrel. –

+0

Mais cela ne fonctionne pas quand déployé à Azur ... –