web-dev-qa-db-ja.com

ピリオドをURLエンコードする方法

ドキュメントパスを渡す必要があるため、ピリオドをURLエンコードする必要があります。

http://example.com/test.aspx?document=test.docx

だからtest.docxは私に違法な文字のエラーを引き起こしています。だから私はそれを

.  -->  %2E

Server.UrlEncodeを使用しようとしました

  string b = Server.UrlEncode("http://example.com/test.aspx?document=test.docx");

しかし私は得る

"http%3a%2f%2fexample.com%2ftest.aspx%3fdocument%3dtest.docx"

それで、文字列置換のように使用し、それを手動で実行し、すべてのピリオドをそのコードで置換する必要がありますか?

28
chobo2

問題が発生していない期間(%2Eで問題が解決しない場合)。ピリオドは、問題がピリオドではない場合でも、完全に有効なURL文字です。スローされるエラーのスタックトレースを確認するか、完全なエラーの詳細を投稿してください。

また、パス全体をURLエンコードしないでください。クエリ文字列パラメーターvalueのみ。

string b = "http://example.com/test.aspx?document=" + Server.UrlEncode("test.docx");

その方法で試してもまだエラーが発生しますか?

10フィートのポールではSharePointに触れません。ただし、この期間を逃れたとしても、SharePointが悪質なことをするのを必ずしも止めることはできません。しかし、私はあなたが少なくともそれを試すべきだと思います。

Server.UrlEncode("test.docx").Replace(".", "%2E");
18
John Leidegren

これは本当に古い質問ですが、同じような問題を探してこの問題に出くわしました。 「/」をピリオド付きのURLの末尾に貼り付けたところ、問題が回避されました。

28
Andrew Edvalson