我正在使用客户端应用程序服务来验证Windows应用程序的用户。 (SqlMembershipProvider)登录工作正常,我可以使用以下代码获取用户名:
userName = System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString();
我想获取有关用户的更多信息,例如电子邮件地址。我尝试了以下行来获取用户。
MembershipUser mu = Membership.GetUser();
以上行给出了“不支持指定方法”的消息。如果我也传入userName也会得到相同的结果。
有没有办法像使用asp.net应用程序一样使用客户端应用程序服务获取更详细的用户信息?如果没有,我想知道我是否应该只创建自己的Web服务包装器?
我正在使用4.0 Framework。
更新: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:堆栈跟踪
at System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider.GetUser(String username,Boolean userIsOnline) 在System.Web.Security.Membership.GetUser(String username,Boolean userIsOnline) at BillingFormsApplication.MDIMain.MDIMain_Load(Object sender,EventArgs e)in C:\ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.cs:line 340
答案 0 :(得分:0)
SimpleMembership,顾名思义,非常简单,并没有实现所有 MembershipProvider 方法;只是那些MVC基本认证和授权所需的。如果您尝试使用未实现的方法,您将获得该异常。您可以从头开始创建自己的MembershipProvider,也可以从SimpleMembership继承并实现未实现的方法。