2011-05-31 80 views
15

我需要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" 

所以我必須使用像一個字符串替換和做它手動並用該代碼替換所有期間?

+1

你確定它是'.'嗎?這看起來像一個完全有效的查詢字符串給我。 – 2011-05-31 17:48:15

回答

13

期間沒有他的問題(考慮到%2E不能解決問題)。一段時間是一個完全有效的URL字符,不管問題出在哪個時期。檢查正在拋出的錯誤的堆棧跟蹤或發佈完整的錯誤細節。

而且你不應該是URL編碼整個路徑。只有查詢字符串參數的值爲

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

如果您嘗試這種方式,您仍然收到錯誤?

我不會用十腳的腳觸摸SharePoint。但是,跳過這段時間並不一定會阻止SharePoint執行它的惡作劇。但我想你至少應該嘗試一下。

Server.UrlEncode("test.docx").Replace(".", "%2E"); 
+1

那麼sharepoint不喜歡它。我認爲在查詢字符串或任何它使用部分url路徑來查找根文件夾,並且不能包含句點。來自極限測試的%2E似乎可以解決它。 – chobo2 2011-05-31 17:50:12

+0

我在使用ASP.NET網頁時遇到了類似的問題。例如:http://www.cutrategamer.com/app/remove-subscription/30/myemail%40gmail.com會引發錯誤信息。將嘗試用「%2E」替換期限。 – 2012-05-11 05:42:42

+1

任何運氣,@ Tod1d?我遇到了一個非常類似的ASP.NET Web API url的問題。 – 2013-07-11 19:46:04

13

這是一個非常古老的問題,但我遇到了這個搜索類似的問題。我在我的網址的末尾插入了一個「/」,並在其中添加了句點,並解決了問題。

+0

令人驚歎。 - 這對我來說適用於Web API。 - 我能做的就是搖頭。 DX – BrainSlugs83 2017-01-26 02:54:34

+0

給任何會使用這個答案的人的一個便條。這將適用於幾乎所有的用例,包括一個OP提供的用例。如果URL以點號字符結束,則這不會**。 – 2017-05-10 16:09:26

+0

很好的解決方案,但如果用戶重新加載頁面,他將再次獲得404中的Angular – Toolkit 2017-06-03 12:58:52