2012-04-10 10 views
2

Diese Frage wurde bereits früher in StackOverFlow gestellt und die Antworten sind auch in diesem Beitrag markiert. Aber leider löst die Lösung, die in Read a file from an unknown location? zur Verfügung gestellt wird, nicht mein Problem.
Ich baue eine Website und muss Daten aus einer Textdatei lesen. Der tatsächliche Speicherort der Datei in meinem PC ist: C:\Developments\TestProject\PettyCashSolution\PettyCashWeb\DataFile.txt und ich habe versucht, Lösungen von oben Link ohne Glück.Wie lese ich Daten aus einer Textdatei, wenn der Speicherort in C# nicht bekannt ist?

string sString = string.Empty; 
string sStr = ""; 
StreamReader oStreamReader; 
try 
{ 

Try1

sStr = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "DataFile.txt"); 

Dies gibt unter:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\pettycashweb\af7f0870\c5ac294a\DataFile.txt

Try2

sStr = Path.Combine(Application.StartupPath, "DataFile.txt"); 

Dies gibt unter:
Compile Fehler: Der Name "Anwendung" im aktuellen Kontext nicht

Try3

oStreamReader = new StreamReader(File.OpenRead(Directory.GetCurrentDirectory().ToString() + "\\DataFile.txt")); 

Dies gibt unten existieren:
Ausnahme: Die Datei 'C: \ Programme \ Microsoft Visual Studio 8 \ Common7 \ IDE \ DataFile.txt' konnte nicht gefunden werden

oStreamReader = new StreamReader(sStr); 
sString = oStreamReader.ReadLine(); 

} 
catch (Exception ex) 
{ 
} 

Bitte auch Ratschläge, was ich tun soll, damit nach dem Veröffentlichen des Webs in Server (IIS) die gelesenen Daten aus der Textdatei ordnungsgemäß funktionieren. Vielen Dank.

Antwort

2

Sie können Anwendungspfad durch AppDomain.CurrentDomain.BaseDirectory

Ihr Code sein muss, wie diese

sStr = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFile.txt");

+0

Großartig, es funktioniert, Danke. Noch eine Sache, wird dieser Ansatz wie nach dem Hosten des Webs im Server funktionieren? –

+0

Ja, es funktioniert, wenn Sie Ihren Code auf dem Server veröffentlichen. Deine Begrüßung :) –

0

Sie können nach es

HttpContext.Current.Request.ApplicationPath 

dann anhängen String erhalten verwenden.

Verwandte Themen