【发布时间】:2016-09-07 15:37:16
【问题描述】:
我正在使用 ChannelFactory 调用 WCF 服务(因为目标服务位置会根据环境而变化,我需要可配置 URL)。但是我得到了错误:
HTTP 请求未经客户端身份验证方案授权 '匿名的'。从服务器收到的身份验证标头是 '协商,NTLM'。
我的电话号码
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress(webserviceAddress);
var myChannelFactory = new ChannelFactory<IObjectService>(myBinding, myEndpoint);
var serviceClient = myChannelFactory.CreateChannel();
我的 WCF 服务 web.config system.servicemodel 部分
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
</system.serviceModel>
服务应基于 Windows 身份验证进行身份验证。我会认为默认情况下,上面的调用代码会使用 Windows 身份验证来传递代码作为(服务帐户)运行的帐户,但它似乎正在发送匿名
【问题讨论】:
-
您的服务是否托管在 IIS 中?是否禁用匿名身份验证?
标签: c# wcf authentication