为了更好地了解如何在 .net MVC4 应用程序中连接身份验证功能,我想我会拆开“Internet 应用程序”模板生成的网站。最终,我正在研究如何实现声称知道的东西(例如:https ://github.com/brockallen/BrockAllen.MembershipReboot )
作为其中的一部分,我发现自己正在查看包含以下代码的方法 WebMatrix.WebData.WebSecurity.PreAppStartInit():
const string BuiltInMembershipProviderName = "AspNetSqlMembershipProvider";
var builtInMembership = Membership.Providers[BuiltInMembershipProviderName];
if (builtInMembership != null)
{
var simpleMembership = CreateDefaultSimpleMembershipProvider(BuiltInMembershipProviderName, currentDefault: builtInMembership);
Membership.Providers.Remove(BuiltInMembershipProviderName);
Membership.Providers.Add(simpleMembership);
}
如果我尝试在控制台应用程序中运行类似的东西,它会在 Membership.Providers.Remove(BuiltInMembershipProviderName);
调用点抛出 System.NotSupportedException。如果集合已经SetReadOnly
调用了它的方法,这是可以预料的,但它没有。我不确定为什么在控制台应用程序代码中会发生这种情况,而不是在 Web 应用程序中。有人有想法么?