我正在为我正在编写的一系列WCF服务基础结构编写BDD规范。我注意到,我编写的每一个规范都涉及到对servicehost.open()的调用,该行执行需要2-6秒(随着我添加越来越多的规范,时间不断增长)。我注意到当调用此方法时,会引发一个win32exception:
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
ServiceModel配置如下:
<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>
注意:我已经配置了http.sys并添加了
http://+:80/calculator/
作为HTTP命名空间排除,所以这不是问题的一部分。
此错误在Windows 7 Ultimate系统上最严重。在Vista终极系统上,它似乎不会造成太大的性能损失,但是servicehost.open()是执行过程中花费的大量时间。我不明白当URL是本地主机时,为什么这是一个问题…我希望环回接口是最快的。