2017-05-26 36 views
0
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) 
    { 

    } 
} 

}Asp.Net不能使用的StreamReader

所以,當我運行這個它給了我一個錯誤,它無法找到TXT文件找到txt文件,是不是同樣在asp.net和windows窗體應用程序使用streamreader,我把txt文件放在bin和root文件夾中,但它又給我提供了同樣的錯誤。

回答

1

你的問題是你不知道當前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或數據庫

不要HOMEBAKE自己的安全代碼

+0

我只是做非常簡單的編程項目我的課。如果我是爲某人或爲我個人使用這樣做,那麼我可能會使用sql或導入數據庫從acces或東西。 –

+0

如果你是學生,那麼很好;如果你是一位老師 - 這很糟糕。 令人驚歎的是學生通過實例學習的東西 - 這是一個可怕的例子。 –

1

在ASP.NET中,你不能直接使用系統目錄。所以你必須使用Server.MapPath("~/")來獲得應用程序的根目錄路徑。

您可以使用這樣

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