質問

私はasp.net urlパスにおいて発生するwebフォーム、はらん"/foo/bar/../bar/パスです。aspx"、そして生成されたhtmlつもこんな感じでしたよ。で短縮できる"/foo/bar/パスです。aspx".

ます。せかいいじゃないか初書きぐらい。必要がありますパスです。

役に立ちましたか?

解決

このヘルパークラスに包まれ、UriBuilderクラスSystem.Net

public static class UriHelper
{       
    public static string NormalizeRelativePath(string path)
    {
        UriBuilder _builder = new UriBuilder("http://localhost");
        builder.Path = path;
        return builder.Uri.AbsolutePath;
    }
}

それに対する使用のようになります:

string url = "foo/bar/../bar/path.aspx";
Console.WriteLine(UriHelper.NormalizeRelativePath(url));

あhackyその具体例やりくりは夫婦で別にされていま.

編集:を反映して変更アンドリューコメントです。

他のヒント

うな静的UriBuilder.この紹介のあらゆる潜在的な競合状態がない場合がございますの検出までの下重負荷時のものです。

場合は二つの異なるスレッドと呼ばれUriHelper.NormalizeRelativePathと同時に、戻り値が渡され、その他の呼び出し元任意.

を利用する場合はUriBuilderこのため、新規作成し必要なときにでも作成).

スレポの返信の方がはるかにより、鉱山だった作業ファイルシステムのパスを、 醜いhack以下 していくという便利です。(訳:私は入力でさんの奏ではない、後で)

ます。合だけで叩二つの文字列と、前後にスラッシュ.私が知る限りでは、パスする方法は正規化パです。GetFullPath.以下の与える可能性がありますので、"清掃"バージョン。

myPath = System.IO.Path.GetFullPath(myPath);

もちろん、小さな発行当然のことですが、そのようなパスに基づくものすべてにおいて、スラッシュに変換するバックスラッシュのような"C:\foo\bar\path.aspx").がわかれば、親会社のオリジナルパス、剥離のルートするべきではないが大きな問題となっています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top