Je travaille sur l'écriture de spécifications BDD pour un large éventail d'infrastructures de services WCF que j'écris. J'ai noté que chaque spécification que j'écris qui implique un appel à ServiceHost.Open(), cette ligne prend un bon 2 - 6 secondes à exécuter (le temps continue à augmenter pendant que j'ajoute de plus en plus de specs). J'ai remarqué que lorsque cette méthode est appelée, un Win32Exception est jeté:Win32Exception @ ServiceHost.Open() pour le service WCF
Win32Exception occurred
Message: The specified domain either does not exist or could not be contacted.
Stack Trace: at System.ServiceModel.UpnEndpointIdentity.GetUpnFromDownlevelName(String downlevelName)
NativeErrorCode: 1355
ErrorCode: -2147467259
La configuration ServiceModel est la suivante:
<system.serviceModel>
<services>
<service name="TestServices.Calculator" behaviorConfiguration="default">
<endpoint
name="calculator"
address=""
binding="wsHttpBinding"
contract="TestServiceContracts.ICalculator" />
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/calculator" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="default" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Note: J'ai configuré http.sys et ajouté http://+:80/calculator/ comme un espace de noms http l'exclusion, de sorte que cela ne fait pas partie du problème.
Cette erreur est plus grave sur un système Windows 7 Ultimate. Sur un système Vista Ultimate, cela ne semble pas causer autant de dégâts sur les performances, cependant ServiceHost.Open() est la majeure partie du temps passé à l'exécution. Je ne comprends pas pourquoi c'est un problème quand les URL sont localhost ... Je m'attendrais à ce que l'interface de bouclage soit la plus rapide de toutes.
Tous les systèmes sur lesquels je teste font simplement partie du groupe de travail WORKGROUP par défaut. – jrista
Se pourrait-il que le DNS ne résout pas le nom de votre machine en adresse IP locale, mais qu'il résolve plutôt quelque chose d'autre pour que le système d'exploitation interprète comme un nom de domaine? – tomasr
Je n'ai pas défini l'élément. Je ne suis pas sûr de ce qu'il vaut par défaut quand il n'est pas explicitement défini. Je verrai ce que je peux trouver. –
jrista