クライアント アプリケーション サービスを使用して、Windows アプリのユーザーを認証しています。(SqlMembershipProvider) ログインは正常に機能し、次のコードを使用してユーザー名を取得できます。
userName = System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString();
メールアドレスなど、ユーザーに関する情報をもう少し取得したい。ユーザーを取得するために次の行を試しました。
MembershipUser mu = Membership.GetUser();
上記の行により、「指定されたメソッドはサポートされていません」というメッセージが表示されます。userName も渡しても同じ結果になります。
asp.net アプリの場合と同様に、クライアント アプリケーション サービスを使用して、より詳細なユーザー情報を取得する方法はありますか? そうでない場合は、代わりに独自の Web サービス ラッパーを作成する必要があるのでしょうか?
4.0 フレームワークを使用しています。
更新: app.config ファイルのスライス
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="http://PC-03/FAAppServices/Authentication_JSON_AppService.axd" credentialsProvider="BillingFormsApplication.LoginForm, BillingFormsApplication" savePasswordHashLocally="True" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="http://PC-03/FAAppServices/Role_JSON_AppService.axd" cacheTimeout="1209600" honorCookieExpiry="True" />
</providers>
</roleManager>
</system.web>
更新 2: スタック トレース
System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider.GetUser (文字列のユーザー名、ブール値の userIsOnline) で System.Web.Security.Membership.GetUser (文字列のユーザー名、ブール値の userIsOnline) で BillingFormsApplication.MDIMain.MDIMain_Load (オブジェクトの送信者、EventArgs e) でC:\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.cs:340行目