c# - 字串轉uri - uri asp net




無效的URI:無法確定URI的格式 (4)

我不斷收到這個錯誤。

無效的URI:無法確定URI的格式。

我擁有的代碼是:

Uri uri = new Uri(slct.Text);
if (DeleteFileOnServer(uri))
{
    nn.BalloonTipText = slct.Text + " has been deleted.";
    nn.ShowBalloonTip(30);
}

更新: slct.Text中的內容是ftp.jt-software.net/style.css

是什麼賦予了? 這不是一個有效的URI格式? 這是純文本。


我通過使用UriBuilder來解決這個問題。

UriBuilder builder = new UriBuilder(slct.Text);

if (DeleteFileOnServer(builder.Uri))
{
   ...
}


聽起來像它可能是一個相對的uri。 我在跨瀏覽器Silverlight時遇到了這個問題; 在我的blog我提到了一個解決方法:通過一個“context”uri作為第一個參數。

如果uri是真實的,則使用上下文uri來創建完整的uri。 如果uri是絕對的,則忽略上下文uri。

編輯:你需要在uri中的“計劃”,例如,“ftp://”或“http://”


這可能有助於為Uri使用不同的構造函數。

如果你有服務器名稱

string server = "http://www.myserver.com";

並有一個相對的Uri路徑來追加它,例如

string relativePath = "sites/files/images/picture.png"

當從這兩個中創建Uri時,我會得到“格式無法確定”的異常,除非我使用UriKind參數的構造函數,即

// this works, because the protocol is included in the string
Uri serverUri = new Uri(server);

// needs UriKind arg, or UriFormatException is thrown
Uri relativeUri = new Uri(relativePath, UriKind.Relative); 

// Uri(Uri, Uri) is the preferred constructor in this case
Uri fullUri = new Uri(serverUri, relativeUri);






uri