1

私の.NETアプリケーションの一部は、入力文字列(URIを表す)を受け取り、ファイル名(および該当する場合は拡張子)のみを返す必要があります。

Path.GetFileNameこれで、次の例外を除いて、ほとんどのパスでこれが完全に正常に実行されます。入力文字列がドメイン名(example.comなど)とポート番号(10210など)のみで構成されるHTTPパスの場合、ポート番号を返しGetFileNameます。

簡単な英語:入力文字列はhttp://example.com:10210、インターネットラジオストリームにリンクするURIです。その値でが呼び出された場合Path.GetFileName、戻り値は10210です。

これは意図された動作ですか?パスセグメントをコロンで区切るプラットフォームを思い出せません。戻り値はすべきではありませんString.Emptyか?

編集

クリーンなソリューションはとの間のマッシュアップのようですが、それはUri.LocalPathプロジェクトSystem.Web.VirtualPathUtility.GetFileNameをクライアントプロファイルから完全なフレームワークに再ターゲットすることを意味します。

最後のスラッシュ記号の前(およびそれを含む)のすべてを削除するだけだと思います。とにかく私のシナリオではセパレーターは決して変わりません。そうすることで、私example.com:10210は戻り値として得られます。これは、私が行っていることに意味があります。

4

3 に答える 3

2

Pathクラスのドキュメントを見ると、httpやftpなどで使用することを意図しているようには見えません。すべての例は、ローカルファイルパスとネットワーク共有パスに関するものです。

Path.Combineに関するこの記事など、Web全体からのその他の事例情報に基づいて、 PathforHTTPを使用するべきではないと思われます。

于 2012-08-07T01:36:38.420 に答える
0

これについては確信が持てません。これは私の推測です..

Pathクラスは、基礎となるファイル システムを持つパスに使用することを目的としています。(HTTP 要求がファイル システムを指していない可能性があります。単に動的に生成されたリソースである可能性があります。)

UriURI 解析には classを使用することになっています。

于 2012-08-07T01:39:02.073 に答える
0

Path.VolumeSeparatorChar(コロン) への呼び出しの結果の一部ではありません。これは、入力が正常であることを検証するために使用されるPath.GetInvalidPathCharsものです。Path.GetFileName残念ながら、これは予期された動作のようです。

于 2012-08-07T01:41:35.893 に答える