Problème avec l'hébergement du service WCF dans un service Windows

J'ai un service WCF qui est hébergé à l'intérieur d'un Service Windows. Le Service Windows dispose d'un OnStart méthode comme ceci:

protected override void OnStart(string[] args)
{
  serviceHost = new ServiceHost(typeof (RouterService));
  serviceHost.Open();
}

C'est tout à fait minime maintenant, depuis que je suis en train d'essayer de trouver le problème. Depuis, je n'ai pas mis toute erreur de manipulation ici, toutes les exceptions à ce point devrait avoir arrêté le service de démarrer correctement. Ce serait pour commencer, et puis arrête automatiquement de nouveau immédiatement.

Mon fichier de configuration pour le service WCF ressemble à ceci:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <system.serviceModel>
    <services>
      <service name="WcfService.RouterService"
               behaviorConfiguration="serviceBehavior" >
        <endpoint address="RouterService" contract="WcfService.IRouterService" binding="wsHttpBinding" bindingConfiguration="NoSecurity" />
        <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding name="NoSecurity">
          <security mode="None" />
        </binding>
      </wsHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="serviceBehavior" >
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

En outre, j'ai ajouté le SERVICE de RÉSEAU de l'utilisateur (qui exécute le service de pouvoir écouter Http sur le port spécifié:

netsh http add urlacl url=http://+:8000/user="NETWORK SERVICE"

Maintenant, dans le client, j'ai choisi de Add Service Reference. Je peut trouver le serveur, et VS aussi réussi à créer la configuration et de rendre les fichiers proxy. Ensuite, à l'intérieur du client, j'ai créer une instance du proxy, et de l'ouvrir. Le tout toujours très bien. Mais lors de l'appel de la première méthode sur le proxy, j'obtiens l'exception suivante:

Le service HTTP situé à http://localhost:8000/RouterService est trop occupé.

Je sais que mon client est la seule chose qui tente de se connecter à ce service, alors pourquoi je reçois ce message d'erreur alors? Et comment puis-je résoudre ce problème? Il n'a pas le temps lorsqu'il tente d'appeler la méthode, il lève l'exception presque immédiatement.

MODIFIER

Ok, maintenant j'ai découvert que mon TestServer (pas le Client Windows, mais une application console) donne la même erreur. Plus tôt aujourd'hui, elle n'a pas, et ni le service WCF ou TestServer sont modifiées.

Puis j'ai essayé de changer le port 8080 au lieu de 8000, et cela a fonctionné. Ensuite, j'ai essayé la même chose pour le Service de Windows, et qui a également travaillé (après l'exécution de la netsh http commande sur le nouveau port)

Donc, quelque chose s'est passé pour le protocole http sur le port 8000 pour une raison quelconque. J'ai essayé de redémarrer le système aussi bien sûr.

C'est étonnant de moi, alors si quelqu'un a une idée de ce qui se passe ici, je l'apprécierais.

source d'informationauteur