2017-03-28 8 views
0

Webアプリケーション/ WebサービスのbinディレクトリにXMLファイルを含めたいとします。 Visual Studioで自分のプロジェクトにbinフォルダを含め、ファイルを追加しました。ビルドアクションを「コンテンツ」に設定し、出力ディレクトリに「常にコピーする」にコピーしました。私のコードはそれを見つけるために行くとき、私はディレクトリを取得し、appPathは(エスケープされていないバージョン)であるappPath、としてそれを返すためにWebサービスからコンテンツファイルにアクセスしてコンテンツファイルにアクセスする

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
if (!dir.EndsWith(@"\")) dir += @"\"; 

を使用します。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\0c7655f\d4908928\assembly\dl3\5cf9fd67\fdc52284_ffa7d201\ 

その後、私は自分のファイル名を追加XMLファイル(string filename = "myXmlFile.xml"は)それを読むために:

StreamReader reader = new StreamReader(appPath + filename); 

しかし、私はそれが私のファイルを見つけることができなかったことを、そのコード行で例外を取得します。私はスラッシュをエスケープするために処理しているので、そうではありません。パスが指す物理ディレクトリをチェックすると、そのディレクトリにコピーされず、例外の原因となります。では、私のファイルをそこにコピーさせるにはどうすればいいですか?

答えて

1

どうHostingEnvironment.ApplicationPhysicalPath

var dir = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "bin\\filename.xml") 

を使用する方法については、関連する質問how to get the application path in asp.net?を参照してください。

+0

優秀!作品!どうもありがとう! – vapcguy

+0

実際には、私たちがファイルへの書き込みをしたいならば、私のファイルがどこにあるべきかに 'bin'を使用してはならないことが、後で分かりました。 Webアプリケーションやサービスからその下のフォルダにあるコンテンツファイルに書き込むたびに、サイトがリセットされ、静的なグローバル変数がクリアされます。私の足跡をたどってみたいと思っている人には注意が必要です。私たちがサイトと同じレベルに移動したとき、すべてがうまくいきました - そのため、そのパスにはもうbinを使用しません。乾杯! – vapcguy

関連する問題