【问题标题】:Asp.Net cant find txt file using streamreaderAsp.Net 使用流式阅读器找不到 txt 文件
【发布时间】:2017-10-27 01:20:00
【问题描述】:
    string[] usernames;
    string[] password ;
    bool username;
    bool passok;
    bool match;
    string passinp;
    string userinp;

    protected void Button1_Click(object sender, EventArgs e)
    {


        StreamReader SrUs = new StreamReader("Usernames.txt");
        StreamReader SrPass = new StreamReader("Password.txt");
        int i = 0;
        while(!SrUs.EndOfStream)
        {
            usernames[i] = SrUs.ReadLine();
        }
        i = 0;
        while(SrPass.EndOfStream)
        {
            password[i] = SrPass.ReadLine();
        }

        if (txt_pass.Text != "" && txt_username.Text != "")
        {
            passinp = txt_pass.Text;
            userinp = txt_username.Text;
        }
        else
        {
            Label3.Text = "Missing information";
        }

        int j = 0;
        for(i = 0;i < usernames.Length;i++)
        {
            if(usernames[i] == userinp)
            {
                username = true;
                break;
            }
        }
        for(j = 0 ; j < password.Length;j++)
        {
            if(password[j]==passinp)
            {
                passok = true;
                break;
            }

        }
        if(username && passok && i == j)
        {
            Label3.Text = "Logon Correct";
        }
        else
        {
            Label3.Text = "Logon Incorect";
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {

    }
}

}

所以当我运行它时,它给了我一个错误,它找不到 txt 文件,它在 asp.net 和 Windows 表单应用程序中使用 streamreader 是否相同,我将 txt 文件放在 bin 和根文件夹中,但又是这样给我同样的错误。

【问题讨论】:

    标签: c# asp.net stream streamreader reader


    【解决方案1】:

    在 ASP.NET 中,您不能直接使用系统目录。所以你必须使用Server.MapPath("~/") 来获取你的应用程序的根目录路径。

    你可以这样使用

    string FilePath = Server.MapPath("~/") + "Usernames.txt";
    StreamReader SrUs = new StreamReader(FilePath);
    

    【讨论】:

      【解决方案2】:

      您的问题是您不知道当前 DLL 实际执行的位置。你已经猜到“bin”目录了。

      Environment.CurrentDirectory 可能是您最好的选择 https://msdn.microsoft.com/en-us/library/system.environment.currentdirectory(v=vs.110).aspx

      或在 httpcontexts 上查看这个问题 How do I get the current directory in a web service

      TBH 将用户名和密码存储在网站工作目录内的文本文件中可能是个坏主意。考虑 C:\inetpub\ 之外的固定目录存储或使用 ADFS 或数据库

      不要自制自己的安全代码

      【讨论】:

      • 我正在为我的班级制作非常简单的编程项目。如果我是为某人或为我个人使用这样做,那么我可能会使用 sql 或从访问权限或其他东西导入数据库。
      • 如果你是学生,那很好;如果您是老师-这很糟糕。学生通过例子学到的东西令人惊讶——这是一个可怕的例子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多