0

開発チーム間で共有できる単体テストを作成しようとしているので、プロジェクト内のすべてのパスを相対的にする必要があります。

これが私に問題を引き起こしているのは、HttpWebRequest クラスです。ローカルファイルシステムのファイルから静的なテストデータを提供したい。

私はこのようなことをしたいと思います:

file:///./TestData/test.html

しかし、それは C:\TestData\test.html と DirectoryNotFoundException を生成するだけです。

HttpWebRequest のコードは次のようになります。

var request = HttpWebRequest.Create(uri);
var response = request.GetResponse();
var responseStream = new StreamReader(response.GetResponseStream());
return responseStream.ReadToEnd();

Uri 構文を壊さずに相対パスを解決するように C# を納得させるにはどうすればよいですか?

挨拶ダニエル

4

2 に答える 2

1

サーバーにしようとしているファイルは、プロジェクト内のアセンブリと比較して相対パスを持っていますか? その場合、アセンブリの 1 つのパスに基づいて非相対 URL を作成し、それを呼び出し元に返すことができます。

例えば:

var basePath = Path.GetDirectoryName(typeof(MyType).Assembly.Location);
var fullPath = Path.Combine(basePath, @"TestData\test.html");
return new Uri(fullPath);
于 2009-02-03T14:48:05.683 に答える
-1

ファイルシステム上にあるのに、なぜ webrequest が必要なのですか? File.ReadAllText(path) で開くことができます

于 2009-02-03T14:52:52.850 に答える