1

帮助!我在登录页面上使用 ASP.Net 登录控件,但登录按钮似乎不再起作用,并且未触发 Authenticate 事件。单击登录后,页面将返回登录页面。

web.config 提取

<authorization>
 <deny users="?" />
  <allow users="*" />
</authorization>

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" timeout="15" defaultUrl="Default.aspx" />
</authentication>

我还将我的 App_Themes 文件夹的路径设置为可供匿名用户访问,以便图像和样式表等显示正常。

登录控件本身将其 DestinationUrl 属性设置为“Default.aspx”并且验证正在工作,就好像我省略了用户名或密码字段一样,我得到验证错误出现在页面上。

登录控制标记:

<asp:Login ID="Login1" runat="server" LoginButtonType="Image" 
  Width="557px" DestinationPageUrl="~/Default.aspx" 
  InstructionText="To login, please enter your username and password below."
  DisplayRememberMe="False" OnAuthenticate="Login1_Authenticate" LoginButtonImageUrl="~/App_Themes/RDCU/Images/submit.gif">
  <InstructionTextStyle Font-Names="Verdana" Font-Size="Small" ForeColor="#00A4E8" Height="40px" />
   <TitleTextStyle CssClass="header" HorizontalAlign="Left" />
   <TextBoxStyle Width="200px" />
   <LabelStyle Font-Bold="True" />
</asp:Login>

它以前工作过,但我不相信我已经改变了任何东西来让它停止工作。

4

2 回答 2

1

我设法通过将登录控件转换为模板,更改一些属性,然后将其重置为其原始布局来自己修复它。

我不确定为什么这会有所作为(也许它会强制重新编译或其他什么),但它现在正在工作。

感谢那些试图提供帮助的人。

于 2009-06-30T22:12:30.487 回答
1

这可能是您的验证问题。

假设您在页面上有 ASP.Net 验证控件,它们可能会干扰登录控件已经存在的验证。尝试将验证控件的 ValidationGroup 属性设置为登录控件的名称。这会将它们放在与登录控件相同的验证组中,从而保持验证的统一。

像这样的东西:

<asp:Login runat="server" ID="myLogin" DisplayRememberMe="false" 
     FailureText="Invalid user name or password" 
     UserNameLabelText="User Name:" TitleText=""
     LoginButtonText="Submit" TextBoxStyle-Width="175px">
</asp:Login>
<asp:CustomValidator runat="server" ID="cvTandC"
     ClientValidationFunction="validateTandC" Display="Dynamic"
     EnableClientScript="true" ErrorMessage="Please check to continue." 
     ForeColor="Red" ValidateEmptyText="true" 
     ValidationGroup="myLogin"></asp:CustomValidator>

注意最后一行的验证组。

于 2009-06-30T16:55:34.400 回答