3

我正在尝试在 .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=不支持指定的方法。
Source=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(String username) 在 C:\Projects\Bedriftsmelding\Bedriftsmelding.Nettside\Models\CompanyUsers.cs:Bedriftsmelding 的第 26 行。 Tests.DTO.CompanyUsersTest.TestGetUserIdFromUserName() 在 C:\Projects\Bedriftsmelding\Bedriftsmelding.Tests\DTO\CompanyUsersTest.cs:line 16 InnerException:

4

2 回答 2

4

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

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

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

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

于 2012-10-15T23:30:21.197 回答
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 的其他信息。我认为这是一种趋势,值得尝试从头开始重新构建我的相关代码。

于 2013-06-12T08:57:22.483 回答