将用户名记录到ASP.NET中的txt文件失败

将用户名记录到ASP.NET中的txt文件失败,asp.net,Asp.net,尝试捕获从登录控制用户名文本框输入的用户名,并写入单独的文本文件以供查看。我需要找出用户输入错误用户名时输入的内容。我假设这需要在代码隐藏中完成,而不能在asp.net控件中完成 <asp:Login ID="Login1" runat="server" Width="760px"> <LayoutTemplate> <table border="0" cellpadding="0" style="width:

尝试捕获从登录控制用户名文本框输入的用户名,并写入单独的文本文件以供查看。我需要找出用户输入错误用户名时输入的内容。我假设这需要在代码隐藏中完成,而不能在asp.net控件中完成

<asp:Login ID="Login1" runat="server" Width="760px">
     <LayoutTemplate>

                     <table border="0" cellpadding="0" style="width: 760px">

                         <tr>
                             <td align="right">
                                 <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label></td>
                             <td>
                                 <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                                 <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
                                     ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator>
                             </td>

                             <td align="right">
                                 <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label></td>
                             <td>
                                 <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
                                 <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                                     ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator>
                             </td>
                            <td align="right">
                                 <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="ctl00$Login1" /></td>
                         </tr>
                          </table>
                         <table border="0" cellpadding="0" style="width: 760px">
                             <tr>
                             <td style="height: 16px; width: 346px; text-align: center;">
                                 <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal></td>

                             <td align="center" style="color: red; height: 16px; text-align: right;">
                                 <asp:HyperLink ID="ForgotPassword" runat="server" NavigateUrl="~/ForgotPassword.aspx">Forgot Password?</asp:HyperLink>&nbsp;</td>
                             </tr>
                         </table>
     </LayoutTemplate>
</asp:Login>

用户名:
*
密码:
*
忘记密码了?

您需要在代码隐藏中处理此问题。最好的地方可能是登录按钮单击处理程序:

protected void LoginButton_Click(object sender, EventArgs e)
{
    string username = Request.Form["UserName"];
    string filepath = Server.MapPath("~") + "debug.txt";

    using (StreamWriter writer = File.CreateText(filepath))
    {
        writer.WriteLine(username);
    }
}
未经测试,但总体而言,这是一个相当简单的操作。显然,这只会将最后一次尝试登录写入文件,不会保留运行日志。当然,您只需要将写入更改为追加即可


编辑:

哎呀,我的阅读理解力太差了。VB.NET版本:

Protected Sub LoginButton_Click(sender As Object, e As EventArgs)
    Dim username As String = Request.Form("UserName")
    Dim filepath As String = Server.MapPath("~") + "debug.txt"

    Using writer As StreamWriter = File.CreateText(filepath)
        writer.WriteLine(username)
    End Using
End Sub

就我个人而言,我会考虑使用Windows事件日志来记录任何调试信息或错误——这比尝试自己设置更容易。如果你真的想这样做,只需查找“c#write text file”(写文本文件)——ASP.NET的唯一区别是你需要确保你已经给了IIS用户适当的权限。这是在托管网站上,我没有访问日志的权限——我写文本文件,只是不确定如何触发事件或获取文本框值(也是在vb.NET中不是c#)啊,这样就足够公平了-假设他们允许您在自己的根文件夹下的服务器上创建文本文件,您应该可以。是的,我以前写过文本(流读取器),但不确定如何获取值,因为它在控件内-page source给了它:
id=“ctl00\u LoginView2\u Login1\u UserName”
为此添加了答案:)谢谢-我想这正是我需要的,“登录按钮点击”是否会干扰当前页面的现有行为。我目前没有vb页面,将添加到现有的仅asp页面?恐怕我能给你的最好答案是“它不应该”。如果页面上有任何javascript,可能会出现问题,特别是如果您使用javascript重定向或修改点击行为。你所能做的就是密切关注任何问题。谢谢你的帮助,我已经把问题解决了。