-->

Win32Exception @ ServiceHost.Open()的WCF服务(Win32Exc

2019-07-21 16:05发布

我正在写BDD规格为一组广泛WCF服务基础设施的我写。 我注意到,每当我写该规范涉及到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 /计算器/作为HTTP命名空间排斥,所以这不是问题的一部分。

此错误是Windows 7旗舰版系统上最严重的。 在Vista旗舰版系统,它似乎并没有造成太大的性能损失,然而ServiceHost.Open()是绝大部分的执行所花费的时间。 我不明白为什么这是一个问题,在所有当URL的是本地主机...我希望loopback接口是最快的所有的。

Answer 1:

这个问题是不是与本地主机VS DNS名称...它与WCF调用TranslateName() API从SAM兼容的名称转换服务的身份UPN(即DOMAIN \用户)为规范名称,并抱怨它不能连接到显示为输入SAM兼容名称指定的域。

不知道什么可能导致这一点,但它可能是你以某种方式在UPN身份指定了错误的域名,或者有什么东西错了你的机器的域名注册,或者防火墙的方式获得。



文章来源: Win32Exception @ ServiceHost.Open() for WCF service