集成Windows身份验证WCF多个主机标头IIS 6无法正常工作

时间:2010-10-11 18:35:15

标签: wcf internet-explorer authentication iis-6

我有一个asp.net 2.0网站,其中托管了WCF服务,并在.NET 3.5框架上运行。该网站仅使用集成Windows身份验证进行设置。 Web服务器是IIS 6,在Windows 2003 Sp2(2台服务器)上具有负载平衡。我无法使用完整网址( http://myqa2.abcdefg.com/trxn/WCFTrxnService.svc )访问WCF服务(.svc)。另请注意,服务器配置了多个主机头。该网站受 siteminder 保护。最初我收到了错误

此集合已包含方案http的地址。此集合中每个方案最多只能有一个地址。参数名称:item

因此添加了以下配置条目

<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <clear/>
    <add prefix="http://myqa2.abcdefg.com"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

该错误消失了,但现在我被浏览器提示登录。对于同一个网站,我可以访问.aspx页面。登录提示仅出现在.svc文件中。

以下是我正在使用的配置文件中的绑定/端点。

<system.serviceModel>
<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <clear/>
    <add prefix="http://myqa2.abcdefg.com"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>
<bindings>
  <basicHttpBinding>
    <binding name="IISIntegratedAuthBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="TestWCFFromSL.Web.WCFTrxnServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpGetUrl="http://myqa2.abcdefg.com/fmc/WCFNotesService.svc"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="TestWCFFromSL.Web.WCFTrxnService" behaviorConfiguration="TestWCFFromSL.Web.WCFTrxnServiceBehavior">
    <endpoint
      address="http://myqa2.abcdefg.com/trxn/WCFTrxnService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="IISIntegratedAuthBinding"
      contract="TestWCFFromSL.Web.IWCFTrxnService" />
  </service>
</services>
<!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>-->

1 个答案:

答案 0 :(得分:0)

如果网站受SiteMinder保护,则WCF / SOAP调用不起作用。但是这个问题的另一个解决方案是工作。

网址myqa2.abcdefg.com/trxn/WCFTrxnService.svc受SiteMinder保护,但 myqa2 / trxn / WCFTrxnService.svc不受siteminder保护,看起来SiteMinder仅保护FQDN(完全限定域名)。所以我将应用程序配置为使用短URL而不是FQDN来调用WCF服务。我还必须使用crossdomainpolicy,因为应用程序将myqa2.abcdefg.com和myqa2视为2个单独的域。