将用户名记录到ASP.NET中的txt文件失败
尝试捕获从登录控制用户名文本框输入的用户名,并写入单独的文本文件以供查看。我需要找出用户输入错误用户名时输入的内容。我假设这需要在代码隐藏中完成,而不能在asp.net控件中完成将用户名记录到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: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> </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重定向或修改点击行为。你所能做的就是密切关注任何问题。谢谢你的帮助,我已经把问题解决了。