我正在爲我寫的一組WCF服務基礎結構編寫BDD規範。我注意到,我編寫的每個規範都涉及對ServiceHost.Open()的調用,該行需要2到6秒才能執行(隨着我添加越來越多的規格,時間不斷增長)。我注意到,當調用此方法,一個Win32Exception拋出:Win32Exception @ ServiceHost.Open()用於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
的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旗艦版系統上最爲嚴重。在Vista旗艦版系統中,它看起來並沒有造成太多的性能下降,但ServiceHost.Open()是執行時間的絕大部分。我不明白爲什麼當URL是本地主機時它是一個問題...我期望回送接口是最快的。
如果機器根本不在域上,該怎麼辦?我所測試的所有系統都只是默認WORKGROUP工作組的一部分。 – jrista 2009-10-09 14:13:20
請問DNS是不是將您的計算機名稱解析爲本地IP,而是解析爲其他內容,以便操作系統解釋爲域名? – tomasr 2009-10-09 15:09:40
我實際上沒有設置元素。我不確定它沒有明確設置時默認的內容。我會看到我能找到的。 –
jrista
2009-10-09 15:38:08