2016-05-28 5 views
0

Nous essayons de configurer un service d'hébergement automatique Owen pour plusieurs applications (app1, app2).API Web Owin héberge plusieurs applications

Nous souhaitons utiliser le même comportement d'IIS lorsqu'un pool d'applications utilise un domaine d'application par application.

Voici le code que nous utilisons:

using (WebApp.Start<WebServerStartup>(url: "http://localhost:9000/")) { ... } 

... et la mise en œuvre de WebServerStartup:

internal class WebServerStartup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     // Configure Web API for self-host. 
     var config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     appBuilder.UseWebApi(config); 
    } 

Comment pouvons-nous utiliser plusieurs domaines d'application pour chaque application? Existe-t-il un moyen de déclarer plusieurs webapps en utilisant Webapp.Start (...) dans des AppDomains séparés qui partageraient le même port? Ou y a-t-il un moyen d'acheminer les requêtes vers différents domaines d'application en définissant une route comme app/api/{controller}/{id} au lieu de api/{controller}/{id}?

Merci

Répondre

0

Il n'y a pas un support intégré pour l'exécution des applications dans des domaines distincts. Vous souhaitez démarrer chaque nouvel AppDomain, puis exécuter WebApp.Start à l'intérieur.

+0

Cela dit, AppDomains offrent une isolation minimale. Il vaut mieux utiliser des processus séparés si vous voulez un véritable isolement. – Tratcher

+0

Depuis mon article original j'ai essayé différentes approches: 1/création d'un serveur HTTP en mémoire (basé sur un serveur de test) qui est invoqué par le serveur HTTP principal en utilisant un middleware OWIN; et 2/pour votre remarque: création d'un proxy inverse redirigeant les requêtes vers d'autres serveurs HTTP hébergés dans des processus séparés et utilisant d'autres ports. La première implémentation a parfaitement fonctionné pour WebApis. J'ai plus de problèmes concernant SignalR que j'étudie actuellement ... et je vais tester votre suggestion d'utiliser un proxy inverse – frblondin

+0

Pourquoi avez-vous besoin du proxy inverse? http.sys/HttpListener peut gérer le partage de port pour vous. – Tratcher