在我的一个应用程序中,我遇到了通过Windows帐户连接和验证WCF服务的问题。为了测试这一点,我已经将它转移到了一个新的解决方案,它带有一个简单的控制台应用程序和VS2010中的标准WCF启动应用程序。
WCF代码,用于简单操作:
[PrincipalPermission(SecurityAction.Demand, Role = "xxxx\\xxxxxx")]
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
配置文件:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:16674/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="testService.IService1"
name="BasicHttpBinding_IService1" />
</client>
对此的呼吁:
testService.Service1Client sv = new testService.Service1Client();
sv.GetData(1);
我正在获得标准的'主要许可请求失败'。错误,虽然我看不出配置文件是如何错误的。我在创建服务对象时查看了它,并且ClientCredentials.Windows和username对象为null。任何人都可以帮助我,我在这里傻吗?
由于
答案 0 :(得分:0)
您需要使用代码设置凭据,请参阅此article
testService.Service1Client sv = new testService.Service1Client();
sv.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultCredentials;
sv.GetData(1);