我試圖驗證表示一個url的字符串是相對的,但它似乎Uri.TryCreate()
將接受任何url沒有協議作爲相對(即:www.domain.com/something /else.aspx)。但我只需要/something/else.aspx/驗證該字符串是相對url不工作
例如,當試圖在第9行獲得uri.PathAndQuery
時,此測試字符串將始終引發異常。儘管TryCreate()
返回true。
string test = "/something/else.aspx";
bool isValid;
var url = getPathAndQuery(test, out isValid);
private string getPathAndQuery(string url, out bool isValid) {
Uri uri;
isValid = Uri.TryCreate(url, UriKind.Relative, out uri);
try {
return isValid ? uri.PathAndQuery : string.Empty;
} catch (Exception e) {
isValid = false;
return string.Empty;
}
}
實施例的輸入/輸出:
輸入:/something/else.aspx ==>輸出:/something/else.aspx
輸入:www.domain.com/something /else.aspx ==>輸出:/something/else.aspx
輸入:http://www.domain.com/something/else.aspx ==>輸出中:的String.Empty
鑑於url的相對路徑,我如何驗證它確實是相對的,並在用戶已經通過域的情況下獲取路徑和查詢?
很容易驗證它是否是相對的,但只獲取可能包含該域的url的路徑和查詢會有點困難。我會怎麼做呢? – bflemi3
您能否包含一些示例輸入和預期輸出?如果路徑是相對的,應該返回多少路徑? – Douglas