1

我有一个用 VB.NET 编程的 WCF 服务,它表现出奇怪的行为。web.config 具有以下 xml:

<system.serviceModel>
  <services>
    <service behaviorConfiguration="CentricBasicHttpBehavior" name="OnbaseService">
      <endpoint binding="basicHttpBinding" bindingConfiguration="CentRicBasicHttpServerBinding" contract="IOnbaseService">
        <identity>
          <servicePrincipalName value="HTTP/JFOLKENDT7E" />
        </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="CentricBasicHttpBehavior">
        <serviceAuthorization impersonateCallerForAllOperations="true" />
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
        <dataContractSerializer maxItemsInObjectGraph="2147483646" />
        <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" maxConcurrentInstances="100" />
      </behavior>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  <bindings>
    <basicHttpBinding>
      <binding name="CentRicBasicHttpServerBinding" maxReceivedMessageSize="5000000">
        <security mode="TransportCredentialOnly">
          <transport clientCredentialType="Windows" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
</system.serviceModel>

当我在 wcf 测试客户端中配置服务时,绑定模式和 TransportClientCredentialType 都显示为“无”。我希望它们分别是“TransportCredentialOnly”和“Windows”。

有人可以与我分享 WCF 测试客户端如何推断绑定配置,以及我应该如何解决这个问题?最终结果是,在服务的源代码中,WindowsIdentity 并没有像我预期的那样模拟用户。

谢谢,

杰森

4

2 回答 2

1

我和杰森一起工作,我们一起研究了这个。服务配置需要名称和联系人属性来匹配完全限定的服务类名称和完全限定的联系人接口名称。否则,我们会为默认服务获得有趣的新 .Net 4.0 默认绑定。

于 2011-07-29T15:39:40.103 回答
0

根据我自己使用 WCF 的经验,我在配置文件中修改了会话超时和连接超时设置,但 WCF 测试客户端不尊重这些设置。似乎 WCF 测试客户端只占用了与 WCF 服务通信的默认值。因此,我使用我自己的自定义 WCF 测试客户端通过生成 app.config 和代理来测试我的 WCF 服务。cs 通过 svcutil.exe 。

于 2011-07-29T14:43:45.733 回答