2

私のアプリケーションの1つで、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であるかどうかを確認しました。誰かが私を助けることができます、私はここで愚かですか?

ありがとう

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 に答える