私が書いている広範な 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 Ultimate システムでは、パフォーマンス ヒットはそれほど大きくないように見えますが、ServiceHost.Open() は実行に費やされる時間の大部分を占めています。URL が localhost の場合になぜ問題になるのかまったくわかりません。ループバック インターフェイスが最も高速であると期待しています。