2014-01-21 181 views
2

我使用以下代碼來驗證url,但是在這兩種情況下 檢查的問題都會返回true。我應該如何在第二種選擇中弄虛作假?URL驗證IsWellFormedUriString始終返回true

這裏布爾是真實的

bool isWellFormedUriString = Uri.IsWellFormedUriString("http://stackoverflow.com/", UriKind.RelativeOrAbsolute); 

這也

bool isWellFormedUriString = Uri.IsWellFormedUriString("ddddd", UriKind.RelativeOrAbsolute); 

真實,現在,當我做 _uri = new Uri(_url);我得到異常....

回答

5

字符串ddddd可能是一個完整的URI的一個有效的「一部分」,所以用RelativeRelativeOrAbsolute返回true。

嘗試改變的第二個參數UriKind.Absolute

bool isWellFormedUriString // returns true 
    = Uri.IsWellFormedUriString("http://stackoverflow.com/", UriKind.Absolute); 

bool isWellFormedUriString // returns false 
    = Uri.IsWellFormedUriString("ddddd", UriKind.Absolute); 

docs

絕對URI由一個完整的參考資源(例如:http://www.contoso.com/index.html),其特徵在於,當一個相對URI取決於先前定義的基本URI(例如:/index.html)。

5

試試這個:

Uri result; 
if (Uri.TryCreate("http://stackoverflow.com",UriKind.Absolute, out result) && 
    result.Scheme == Uri.UriSchemeHttp) 
{ 
    //Use the valid Uri here 
} 

我限制了有效的方案,否則即使目錄的URI將是有效的(例如:c:\\directory\\filename