2

在我的一个应用程序中,我在通过 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 和用户名对象为空。谁能帮帮我,我在这里是不是很傻?

谢谢

4

1 回答 1

0

您需要使用代码设置凭据,请参阅本文

 testService.Service1Client sv = new testService.Service1Client();
 sv.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultCredentials;
 sv.GetData(1);
于 2012-09-24T10:55:36.617 回答