一个页面只能有一个服务器端表单标签-允许未经身份验证的访问aspnet成员提供程序



我被给予了一个"老派的";使用asp.net成员资格提供程序进行登录的应用程序。我的目标是将用户重定向到"changepassword .aspx"。页面,当他们试图登录-如果他们有一个肮脏的标志设置在db.

Dim hash As SecurePassword = New SecurePassword()
If Not hash.IsAccountSecurelyUpgraded(myLogin.UserName) Then
Response.Redirect("/aspnet_membership/ChangePassword.aspx") 
End If
If Membership.ValidateUser(myLogin.UserName, myLogin.Password) Then
...some code...
End If

I get error

一个页面只能有一个服务器端表单标签

ChangePassword.aspx

<%@ Page Language="VB" AutoEventWireup="false" Inherits="VL.ChangePassword" Codebehind="ChangePassword.aspx.vb" %>
<%@ Register TagPrefix="uc1" TagName="Header" Src="../UI/Template/Header.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Footer" Src="../UI/Template/Footer.ascx" %>
<uc1:header id="Header1" runat="server"></uc1:header>
<form id="ChangePassword" runat="server">
<h2>Change Your Password</h2>
...
</form>     
<uc1:footer id="Footer1" runat="server"></uc1:footer>

站点中的其他url不会给出此错误。(他们给出未经验证的错误)

Site.master

<body>
<div id="wrapper">
<form id="form1" runat="server">

<div id="header">
<span class="title">User Account </span><br />

<span class="breadcrumb">
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
</span>
</div>

<div id="content">
<asp:contentplaceholder id="MainContent" runat="server">
<!-- Page-specific content will go here... -->
</asp:contentplaceholder>
</div>

<div id="navigation">
<asp:ContentPlaceHolder ID="LoginContent" runat="server">
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
Welcome back,
<asp:LoginName ID="LoginName1" runat="server" />.
<br />
<asp:HyperLink ID="lnkUpdateSettings" runat="server" NavigateUrl="~/aspnet_membership/AdditionalUserInfo.aspx">Update Your Settings</asp:HyperLink>
</LoggedInTemplate>
<AnonymousTemplate>
Hello, stranger.
</AnonymousTemplate>
</asp:LoginView>
<br />
<asp:LoginStatus ID="LoginStatus1" runat="server" LogoutAction="Redirect" LogoutPageUrl="~/Logout.aspx" />

<br /><br />
</asp:ContentPlaceHolder>
<ul>...</ul>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
</div>
</form>
</div>
</body>

原来头UserControl在代码后面添加了脚本。

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

LoginPanel.Visible = Not UserManager.IsLoggedIn()
If System.IO.Path.GetFileName(Request.ServerVariables("SCRIPT_NAME")) = "ChangePassword.aspx" Or
System.IO.Path.GetFileName(Request.ServerVariables("SCRIPT_NAME")) = "RecoverPassword.aspx" 
(System.IO.Path.GetFileName(Request.ServerVariables("SCRIPT_NAME")) = "contact.aspx" And Not UserManager.IsLoggedIn()) Then
LoginPanel.Visible = False
End If
If Not Page.IsPostBack Then
Login_Check()
End If
End Sub 

添加完成后,修改密码。把Aspx放到列表中,它开始工作

最新更新