我正在尝试在.NET Membership.GetAllUsers()集合中使用LINQ,例如在获取所有用户名时:
var usernames = Membership.GetAllUsers().Cast<MembershipUser>().Select(x=>x.UserName).ToList();
但VS告诉我它不受支持..
成员身份是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未被用户代码
处理 消息=不支持指定的方法 Source = System.Web.Extensions StackTrace: 在System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider.GetAllUsers(Int32) pageIndex,Int32 pageSize,Int32&amp;共条记录) 在System.Web.Security.Membership.GetAllUsers(Int32 pageIndex,Int32 pageSize,Int32&amp; totalRecords) 在System.Web.Security.Membership.GetAllUsers() at Bedriftsmelding.Nettside.Models.CompanyUsers.GetUserIdFromUserName(String 用户名) C:\项目\ Bedriftsmelding \ Bedriftsmelding.Nettside \型号\ CompanyUsers.cs:行 26 在Bedriftsmelding.Tests.DTO.CompanyUsersTest.TestGetUserIdFromUserName() 在 C:\项目\ Bedriftsmelding \ Bedriftsmelding.Tests \ DTO \ CompanyUsersTest.cs:行 16 InnerException:
答案 0 :(得分:4)
看起来您正在使用ClientFormsAuthenticationMembershipProvider而不是默认的SqlMembershipProvider。
根据ClientFormsAuthenticationMembershipProvider的文档,不支持GetllAllUsers并抛出不支持的异常。
似乎只有基本的ValiateUser和一些其他函数可以与此提供程序一起使用,因为它是为与Ajax扩展一起使用而设计的。用户功能都不起作用,例如GetUser,GetAllUsers,DeleteUser,CreateUser等......
答案 1 :(得分:1)
在我阅读这个主题之前,我遇到了同样的问题: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的其他信息。我认为这是一种趋势,值得尝试从头开始重建我的相关代码。