WCF Windows身份验证,未传递

时间:2012-09-24 10:24:37

标签: c# wcf

在我的一个应用程序中,我遇到了通过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。任何人都可以帮助我,我在这里傻吗?

由于

1 个答案:

答案 0 :(得分:0)

您需要使用代码设置凭据,请参阅此article

 testService.Service1Client sv = new testService.Service1Client();
 sv.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultCredentials;
 sv.GetData(1);