我正在使用ChannelFactory调用WCF服务(因为目标服务位置将根据环境而改变,我需要可配置的URL)。但是我得到的错误:通过channelfactory调用WCF webservice时出错 - 未经许可
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,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中?是否禁用匿名身份验证? – Tim