1

ASP.NET MVC アプリから、リモート サーバー パスとデータベースから抽出されたパスの 2 つのパスを連結しようとしています。私は以下で実行しています:

string serverPath = @"\\myServer\TempFolder";
string filePath = GetPathFromDatabaseTable();

string finalPath = System.IO.Path.Combine(serverPath, filePath);

GetPathFromDatabaseTable メソッドは次の文字列を返します。

\\path\\to\\file.pdf

Path.Combine を使用して連結すると、結果は次のようになります。

\\path\\to\\file.pdf

したがって、プレフィックス serverPath \myServer\TempFolder は削除されます。なぜ起こっているのですか?

4

3 に答える 3

1

このUriクラスを使用して、リモート パスとローカル パスを組み合わせることができます。

string serverPath = @"\\myServer\TempFolder";
string filePath = "\\path\\to\\file.pdf";

Uri serverUri = new Uri(serverPath + filePath);

string finalPath = serverUri.LocalPath;

どちらが返されますか

\\myserver\TempFolder\path\to\file.pdf
于 2020-04-21T17:48:51.150 に答える
0

クエリは正確に返され\\path\\to\\file.pdfますか? または、それはC#デバッガーでの表現にすぎません。

ディレクトリ区切りとしてデータベース フィールドに格納しないでください。\\これ\\は、C# で記述するときに文字列をエスケープするためにのみ必要です。 ( を使用していない場合@"\")

\\データベース フィールドで使用すると、最初\\のパスはルート化されたパスと見なされ、おそらく前のパスが削除されます。

于 2020-04-21T17:49:08.823 に答える