【问题标题】:NotSupportedException when casting Membership.GetAllUsers() to generic list将 Membership.GetAllUsers() 转换为通用列表时出现 NotSupportedException
【发布时间】:2012-10-06 00:00:57
【问题描述】:

我正在尝试在 .NET Membership.GetAllUsers() 集合上使用 LINQ,例如在获取所有用户名时:

var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x=>x.UserName).ToList();

但是VS告诉我不支持..

Membership 是 Web.Security 的一部分,与 MembershipUser 相同

这是我的连接字符串(如果有任何相关性):

   <add name="ApplicationServices" connectionString="Data Source=somerserver.xx\SQLEXPRESS;Initial Catalog=bedriftsmelding;User Id=SomeUser;Password=SomePassword;Integrated Security=False" providerName="System.Data.SqlClient" />

堆栈跟踪:

System.NotSupportedException 未被用户代码处理
Message=不支持指定的方法。
源 = System.Web.Extensions StackTrace: 在 System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider.GetAllUsers(Int32 pageIndex, Int32 pageSize, Int32& totalRecords) 在 System.Web.Security.Membership.GetAllUsers(Int32 pageIndex,Int32 pageSize,Int32 & totalRecords) 在 System.Web.Security.Membership.GetAllUsers() 在 Bedriftsmelding.Nettside.Models.CompanyUsers.GetUserIdFromUserName(字符串 用户名)在 C:\Projects\Bedriftsmelding\Bedriftsmelding.Nettside\Models\CompanyUsers.cs:line 26 在 Bedriftsmelding.Tests.DTO.CompanyUsersTest.TestGetUserIdFromUserName() 在 C:\Projects\Bedriftsmelding\Bedriftsmelding.Tests\DTO\CompanyUsersTest.cs:line 16 内部异常:

【问题讨论】:

  • 我已将其添加到问题中,谢谢
  • 您必须为该集合使用foreach
  • foreach 没有帮助,没有可用的方法

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


【解决方案1】:

看起来您使用的是 ClientFormsAuthenticationMembershipProvider 而不是默认的 SqlMembershipProvider。

根据 ClientFormsAuthenticationMembershipProvider 的文档,不支持 GetllAllUsers 并引发不支持的异常。

http://msdn.microsoft.com/en-us/library/system.web.clientservices.providers.clientformsauthenticationmembershipprovider.getallusers.aspx

似乎只有基本的 ValiateUser 和一些其他功能可以与此提供程序一起使用,因为它是为与 Ajax 扩展一起使用而设计的。用户函数都不起作用,例如 GetUser、GetAllUsers、DeleteUser、CreateUser 等...

【讨论】:

  • 嗯,这听起来很合理。你是如何得出这个结论的?我怎样才能验证这确实是这样?最后,如何更改为默认提供程序?
  • @Sindre - “根据文档”的哪一部分,并提供指向上述文档的链接供您查看自己不清楚?我通过检查文档并注意到它说“这个方法总是抛出异常”来“得出这个结论”。并查看“此类未使用此方法”的概述。关于 GetAllUsers。我还注意到它对我提到的其他方法说了同样的话。
【解决方案2】:

在阅读此主题之前,我遇到了同样的问题:SimpleMembership, Membership Providers, Universal Providers and the new ASP.NET 4.5 Web Forms and ASP.NET MVC 4 templates

一个简单的答案是 MVC4 中的成员机制与 MVC3 及之前的成员机制完全不同。还有来自 asp.net MVC 项目的 PM 的其他信息。我认为这是一种趋势,值得尝试从头开始重新构建我的相关代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多