3

私が書いている広範な 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 の場合になぜ問題になるのかまったくわかりません。ループバック インターフェイスが最も高速であると期待しています。

4

1 に答える 1

4

問題はlocalhostとdnsの名前ではありません...これは、WCFがTranslateName() apiを呼び出してサービスのUPN IDをSAM互換の名前(つまり、DOMAIN \ user)から正規の名前に変換し、不平を言うことに関連しています。入力として提示されたSAM互換名で指定されたドメインに接続できないこと。

何が原因かはわかりませんが、UPN IDに間違ったドメインを指定しているか、マシンのドメイン登録に問題があるか、ファイアウォールが邪魔をしている可能性があります。

于 2009-10-09T11:25:38.720 に答える