2 votes

Service WCF d'hébergement de console Http accessible sous mono et IIS

Je travaille actuellement sur un projet et j'essaie de me familiariser avec les services web WCF.

J'ai une application console qui héberge un service WCF. J'ai ajouté l'URL à laquelle il doit être accessible dans le champ <baseAddress> du fichier App.config. Lorsque j'exécute l'application console en mode débogage dans Visual Studio, j'obtiens un popup disant your services have been hosted .

Si je lance mon application en dehors de Visual Studio et que j'accède à l'URL, je ne peux pas me connecter. Je suppose que je dois effectuer une configuration pour que cela fonctionne, mais je ne trouve pas ce que je dois faire.

J'ai deux questions : comment faire pour que le service WCF hébergé dans l'application console soit accessible via http:// en utilisant IIS pour Windows et le rendre disponible en utilisant Mono C# avec un serveur web Apache.

Merci de toute l'aide que vous pourrez m'apporter.

2voto

Martin Baulig Points 2260

Hébergement dans IIS - Pour les tests

Pour héberger le service dans IIS, vous devez créer un répertoire virtuel. Il y a deux façons de le faire :

Pour un test facile :

  • Cliquez avec le bouton droit de la souris sur votre projet de service WCF dans Visual Studio, sélectionnez Propriétés / Web.
  • Sélectionnez "Utiliser le serveur Web IIS local" à cet endroit.
  • Ne pas activer "Utiliser IIS Express".
  • L'URL du projet est l'adresse à laquelle votre serveur doit être visible sur le web. http://yourhost/somepath/
  • Cliquez sur "Create Virtual Directory" (il se peut que vous deviez exécuter Visual Studio en tant qu'administrateur pour cela, mais cette étape n'est nécessaire qu'une seule fois, vous n'avez pas besoin des privilèges d'administrateur pour une utilisation quotidienne).

Après cela, votre répertoire virtuel est configuré et IIS dirigera toutes les requêtes vers http://yourhost/somepath à votre service WCF. Notez que ceci pointera vers les binaires qui ont été générés par Visual Studio à l'intérieur de votre répertoire de projet, donc une reconstruction sera automatiquement des choses.

Il s'agit de l'option la plus simple pour le développement et les tests. Vous n'avez même pas besoin d'ouvrir Visual Studio, mais toute modification apportée sera automatiquement répercutée sur l'instance déployée.

Hébergement dans IIS - Pour la production

Pour la production, vous devez créer un véritable répertoire virtuel. Pour ce faire :

  • Créez un répertoire où votre service doit être hébergé, par exemple `. C:\inetpub\yoursite\yourservice\ ', il peut s'agir de n'importe quel répertoire de votre système de fichiers.
  • Copiez votre service web dans ce répertoire (Visual Studio a un moyen d'automatiser cela, mais je ne l'ai jamais utilisé, donc je ne sais pas vraiment comment cela fonctionne).
  • Ouvrez "Internet Information Services (IIS) Manager" (doit être exécuté en tant qu'administrateur).
  • Dans le volet de gauche, vous trouverez vos instances et sites IIS configurés. Si vous exécutez cette opération pour la première fois et que le volet de gauche est vide (il devrait y avoir un site par défaut), il suffit de cliquer avec le bouton droit de la souris et de sélectionner "Ajouter un site Web".
  • Cliquez avec le bouton droit de la souris sur votre site Web et sélectionnez "Ajouter un répertoire virtuel". L'alias est le nom visible du nouveau répertoire, par exemple http://yoursite/alias/ et le chemin physique pointe simplement vers le répertoire dans lequel vous avez déployé votre service.

Auto-hébergement

L'application de votre console est appelée auto-hébergement. Si cela ne fonctionne pas en dehors de Visual Studio, il y a généralement quelque chose qui ne va pas dans votre application de console. app.config . J'ai un exemple simple ici .

L'hébergement avec Mono

Pour Mono, vous avez trois options :

  1. Auto-hébergement
  2. Apache avec mod-mono pour la production
  3. Apache avec mod-mono utilisant le répertoire courant pour les tests

L'auto-hébergement signifie la création d'une simple application console qui fait quelques

var host = new System.ServiceModel.ServiceHost(typeof(MyService));
host.Open();
Console.WriteLine("Service running");
foreach (var se in host.Description.Endpoints)
    Console.WriteLine(se.Address);
Console.ReadLine();
host.Close();

et l'exécuter avec Mono sur la ligne de commande.

Voir Impossible d'accéder au service WCF hébergé dans Apache avec mod-mono pour savoir comment configurer apache avec mod-mono, y compris quelques exemples.

Vous avez également deux options ici : soit vous copiez votre service dans un répertoire qui sera récupéré par Apache - ou vous pouvez également lancer mod-mono-server manuellement et spécifier un répertoire arbitraire, par exemple le répertoire courant pour les tests.

0voto

Jacob Points 695

Vous ne pouvez pas héberger l'application Console dans l'IIS, vous devez créer un service WCF (fichier .svc dans l'application Wab) dans l'IIS. et l'IIS exécutera et hébergera votre service. quand l'IIS héberge votre service, l'URL est le chemin du fichier .svc dans l'IIS (comme un site web). De plus, si vous utilisez basicHttpBinding, il devrait être disponible à partir de n'importe quelle plateforme utilisant des services Web basés sur ASMX.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X