我有一个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"/>-->
答案 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个单独的域。