2008-10-18 15 views
5

Deux services Windows s'exécutent sur la même machine. Les deux services utilisentDémarrage de plusieurs écouteurs HTTP sur IIS à l'aide de C# .NET 2.0

private HttpListener listener;

je précise le baseURL comme "http://IPAddress:8080/" & "http://IPAddress:8081/" respectivement pour chacun des services. Ensuite, je fais le nécessaire et appelez

listener.Start();

Le premier service démarre avec succès sur le port 8080. Mais quand je commence maintenant le 2ème service, je reçois HTTPListenerException "Le processus ne peut pas accéder au fichier parce qu'il est utilisé par un autre processus" pour l'objet écouteur.

Quelqu'un pourrait me dire: 1) S'il est possible de démarrer deux écouteurs HTTP sur le même IIS à deux ports différents. 2) Si oui, comment pouvons-nous l'obtenir? 3) Existe-t-il un autre moyen de le faire? Pour votre information: J'utilise le serveur C# .NET 2.0 et IIS 6.0.

Merci & Cordialement,

Hari

Répondre

4

N'a pas HttpListener fonctionne indépendamment de IIS? Pouvez-vous arrêter le service IIS et voir ce qui se passe?

Ou peut-être le port 8081 est utilisé par un autre programme ou processus. Je suggère d'essayer de définir le port à un autre numéro. Vous pouvez ouvrir une ligne de commande et exécuter la commande "netstat" pour voir si le port est utilisé avant de démarrer vos services.

alt text http://simpleinformation213421.googlepages.com/netstat_ano.gif

1

Le HttpListener est en effet pas une partie de l'IIS. C'est juste du code C#.

l'avez-vous fait comme ceci?

String[] prefixes = { "http://localhost:8280/", "http://localhost:8281/"}; 

HttpListener listener = new HttpListener(); 
listener.Prefixes.Add("http://localhost:8280/"); 
listener.Start(); 

1) S'il est possible de lancer deux écouteurs HTTP sur le même IIS à deux ports différents.

Oui, c'est. Mais les écouteurs sur IIS ne sont pas créés via le code, mais via l'outil d'administration IIS, ce n'est probablement pas ce que vous essayez de faire. IIS est séparé du code C# que vous êtes attampting.

2) Si oui, comment pouvons-nous l'obtenir?

  • Essayez d'autres portnumbers (comme 58080 et 58081) et essayez de remplacer "IPAddress" avec "localhost". Très probablement votre numéro de port est utilisé par un autre serveur Web

3) Est-il une autre façon de le faire?

Si vous essayez de servir des pages Web, vous wan't probablement faire un webapplication au lieu de faire votre propre serveur http

Si vous faites quelque chose de coutume, vous voudrez peut-être jeter un oeil à WCF (Windows Communication Foundation), comme il est le nouveau cadre pour le web, prises, etc. webservices et il est ce que MS va utiliser l'avenir

2

Merci pour votre réponse immédiate :-)

numéro de port a été le problème. J'utilisais des numéros de port comme 8080,8081,8082, etc. Probablement ces ports étaient déjà utilisés.

J'ai essayé avec les ports http://localhost:8080 et http://localhost/35124 et cela a fonctionné.

encore une fois merci pour vos réponses.

Merci & Cordialement,

Hari

1

Il est généralement une bonne idée de jeter un coup d'œil sur this la page lors de l'utilisation des numéros de port ... juste pour vous assurer un numéro de température que vous essayez d'utiliser n'est pas déjà utilisé.