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