Asp.Net无法使用streamreader找到txt文件

时间:2017-05-26 08:06:29

标签: c# asp.net stream streamreader reader

    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 form app中使用streamreader,我把txt文件放在bin和root文件夹中但是又一次给了我同样的错误。

2 个答案:

答案 0 :(得分:1)

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

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或数据库

不要自行购买您自己的安全代码

答案 1 :(得分:1)

在ASP.NET中,您无法直接使用系统目录。因此,您必须使用Server.MapPath("~/")来获取应用程序的根目录路径。

你可以这样使用

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