2010-04-27 64 views
1

我在Web應用程序中遇到了URL字符串問題。它使用的是類似於\\houtestmachine\common\File1.pdf的UNC路徑。我的問題是當它遇到具有#字符的文件時。我嘗試做一個字符串newstring = originalstring.Replace(「#」,「%23」);但是在瀏覽器運行時,#仍然存在於URL(超鏈接的目標)中。我怎樣才能解決這個問題?在特殊字符處出現網址

+0

還與我上面做了替換,我注意到,它把2523,其中23%應導致我相信它試圖對%符號進行編碼,而不是僅僅放入%23。如果有人能幫助我,請告訴我。謝謝 – Josh 2010-04-27 22:11:20

回答

2

你的文件系統路徑和URL之間的轉換。 Uri類應符合該法案:

using System; 

class Program { 
    static void Main(string[] args) { 
    var url = new Uri(@"\\houtestmachine\common\F#ile1.pdf"); 
    Console.WriteLine(url.AbsoluteUri); 
    var back = url.LocalPath; 
    Console.WriteLine(back); 
    Console.ReadLine(); 
    } 
} 

輸出:

file://houtestmachine/common/F%23ile1.pdf 
\\houtestmachine\common\F#ile1.pdf 
+0

漢斯 - 我認爲你在這裏,但我的問題仍然存在。讓我進一步解釋我的例子可能不完美。我的循環也找到了一個名稱結構如「5678_Mills 09-14#2-3H_CBL.tif」的文件,並且你的代碼看起來似乎最初將它設置爲怪人houtestmachine/common/5678_Mills%2009-14%20% 232-3H_CBL.tif然後我必須設置hyperlink.NavigateUrl到這個uri.absoluteUri,當我把鼠標懸停在瀏覽器的這個超鏈接上時,我發現它說怪人怪人houtestmachine/common/5678_Mills%2009-14%20#2-3H_CBL .tif – Josh 2010-04-28 12:55:32

+0

那麼這與超鏈接有什麼關係,或者是否存在一個與#號空間盈利有關的問題?我不知道,但有很多文件具有這種結構,我需要找到一種方法來實現它。感謝您的幫助 – Josh 2010-04-28 12:56:12

+0

爲什麼file://前綴缺失?這應該很重要。 – 2010-04-28 13:05:48

1
+0

是的,我試過字符串NewString = System.Web.HttpUtility.UrlEncode(OriginalString);並且在運行時對我的URL字符串做了一些奇怪的事情。它不是一個UNC路徑,而是它變成http://servername/extrastuff..然後它試圖包含文件的位置。我需要UNC路徑集,就像它一樣,但沒有#。我把它設置錯了嗎? – Josh 2010-04-27 22:03:30

+0

我設置錯了嗎? – Josh 2010-04-28 14:12:13

0

使用符號@ befor字符串。例如

串ST = @「你的#路」