![](/img/trans.png)
[英]Getting “null” in Membership.GetUser() and Page.Identity.User
[英]Reverted to Membership from Identity and getting strange result for logged in user name
使用VS2013 Update 1我创建了一个新的WebForms项目。 该项目使用“新”身份成员资格提供程序。 我不想使用它,所以我又回到了成员资格提供者(有关详细信息,请参阅Webforms HttpContext.Current.User.Identity.IsAuthenticated始终为true )
一旦用户在我检查时进行了身份验证,我仍然必须有一些错误:
System.Web.HttpContext.Current.User.Identity.Name
我正进入(状态:
"/"
结果而不是用户在登录时输入的名称:
Membership.ValidateUser(txtUserName.Text,txtPassword.Text)ie。 为什么我没有得到txtUserName.Text的值而不是/
我已经验证了SQL何时被执行了
HttpContext.Current.User.Identity.Name
正在访问的是通过以下SQL返回预期值:
SELECT
[Limit1].[C1] AS [C1],
[Limit1].[UserName] AS [UserName],
[Limit1].[UserId] AS [UserId],
[Limit1].[Email] AS [Email],
[Limit1].[PasswordQuestion] AS [PasswordQuestion],
[Limit1].[Comment] AS [Comment],
[Limit1].[IsApproved] AS [IsApproved],
[Limit1].[IsLockedOut] AS [IsLockedOut],
[Limit1].[CreateDate] AS [CreateDate],
[Limit1].[LastLoginDate] AS [LastLoginDate],
[Limit1].[LastActivityDate] AS [LastActivityDate],
[Limit1].[LastPasswordChangedDate] AS [LastPasswordChangedDate],
[Limit1].[LastLockoutDate] AS [LastLockoutDate]
FROM ( SELECT TOP (1)
[Extent1].[UserId] AS [UserId],
[Extent1].[UserName] AS [UserName],
[Extent1].[LastActivityDate] AS [LastActivityDate],
[Extent3].[Email] AS [Email],
[Extent3].[PasswordQuestion] AS [PasswordQuestion],
[Extent3].[IsApproved] AS [IsApproved],
[Extent3].[IsLockedOut] AS [IsLockedOut],
[Extent3].[CreateDate] AS [CreateDate],
[Extent3].[LastLoginDate] AS [LastLoginDate],
[Extent3].[LastPasswordChangedDate] AS [LastPasswordChangedDate],
[Extent3].[LastLockoutDate] AS [LastLockoutDate],
[Extent3].[Comment] AS [Comment],
1 AS [C1]
FROM [dbo].[Users] AS [Extent1]
INNER JOIN [dbo].[Applications] AS [Extent2] ON [Extent1].[ApplicationId] = [Extent2].[ApplicationId]
INNER JOIN [dbo].[Memberships] AS [Extent3] ON [Extent1].[UserId] = [Extent3].[UserId]
) AS [Limit1]
这是我的web.config:
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="MyApp2" />
</providers>
</membership>
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="MyApp2" />
</providers>
</profile>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="MyApp2" />
</providers>
</roleManager>
因此问题“必须”是我在某处以某种方式引用了身份会员资格提供程序。 任何人都可以帮助我,因为我真的被卡住了。
我想一个相关的问题是,有没有关于如何将项目从Identity恢复到以前的会员系统的HOWTO?
编辑
在我将应用程序名称更改为“MyApp”之后,当我再次使用该应用程序再次使用该应用程序时,我认为它完全正常工作后,我回到旧的“坏”行为,我得到“/”作为用户名。 所以我将数据库更改为MyApp2以及web.config仍然没有区别。
我现在还包括数据库中表格的屏幕截图,以防这对任何事情都有帮助。 我真的需要弄清楚这一点,所以会欣赏任何见解。 我也很乐意根据需要提供其他诊断。
那么它总是简单的解决方案不是吗?
事实证明,我没有在aspx:login中为我的登录页面放置我的ASPX代码。 这意味着cookie没有正确设置,因为我所做的只是Membership.RedirectFromLogin()。
所以,一旦我把东西放入aspx:登录一切都很顺利。 希望这有助于将来的其他人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.