我正在使用客户端应用程序服务来验证 Windows 应用程序的用户。(SqlMembershipProvider) 登录工作正常,我可以使用以下代码获取用户名:
userName = System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString();
我想获取有关用户的更多信息,例如电子邮件地址。我尝试了以下行来获取用户。
MembershipUser mu = Membership.GetUser();
上面的行给了我一个“不支持指定的方法”的消息。如果我也传入用户名,结果相同。
有没有办法像在 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(String username, Boolean userIsOnline) 在 System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline) 在 BillingFormsApplication.MDIMain.MDIMain_Load(Object sender, EventArgs e) in C:\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.cs:第 340 行