2012-04-10 7 views
2

この質問は以前StackOverFlowで質問されており、回答もその投稿に記されています。しかし悲しいことに、 Read a file from an unknown location?で提供される解決方法は私の問題を解決しません。
私はウェブサイトを構築しており、テキストファイルからデータを読み込む必要があります。私のPCにファイルの実際の場所は:C:\Developments\TestProject\PettyCashSolution\PettyCashWeb\DataFile.txtと私は は、運のない上記のリンクから以下のソリューションを試してみました。C#でファイルの場所がわからない場合、テキストファイルからデータを読み取る方法は?

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

Try1

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

これは、以下を返し:
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"); 

これは、以下を返します:
コンパイルエラーが :名前 "アプリケーション" は、現在のコンテキスト内に存在しない

Try3

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

を。これは、以下を返します:
例外: 'C:¥Program Files¥Microsoft Visual Studio 8¥Common7¥IDE¥DataFile.txt'ファイルが見つかりませんでした

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

} 
catch (Exception ex) 
{ 
} 

また、サーバー(iis)にWebを公開した後に、テキストファイルから読み取ったデータが正しく機能するように、どうすればよいかアドバイスしてください。ありがとう。

答えて

2

あなたはあなたのコードは、あなたがそれに応じて文字列を追加

HttpContext.Current.Request.ApplicationPath 

を使用することができ、この

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

+0

素晴らしいです、ありがとう、ありがとう。もう一つのことは、このアプローチはサーバーのWebをホストした後に今のように動作するのでしょうか? –

+0

はい、サーバーにコードを公開すると機能します。どういたしまして :) –

0

ようにする必要がありAppDomain.CurrentDomain.BaseDirectory

することにより、アプリケーションのパスを取得することができます。

関連する問題