Membership.GetUser() - 不支持指定的方法

时间:2013-07-09 18:45:58

标签: c# asp.net asp.net-membership

我正在使用客户端应用程序服务来验证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

1 个答案:

答案 0 :(得分:0)

SimpleMembership,顾名思义,非常简单,并没有实现所有 MembershipProvider 方法;只是那些MVC基本认证和授权所需的。如果您尝试使用未实现的方法,您将获得该异常。您可以从头开始创建自己的MembershipProvider,也可以从SimpleMembership继承并实现未实现的方法。