2010-11-12 1 views
13

Я пытаюсь проверить Uri, используя метод Uri.TryCreate, и когда я вызывал его с недопустимой строкой, метод возвращался true. Любые идеи почему? Мой код ниже:Uri.TryCreate возвращает true для любого строкового значения?

private void button1_Click(object sender, EventArgs e) 
    { 
     Uri tempValue; 
     if (Uri.TryCreate("NotAURL", UriKind.RelativeOrAbsolute, out tempValue)) 
     { 
      MessageBox.Show("?"); 
     } 
    } 

ответ

21

Это действительный относительный URL. Примером недействительного URI является:

"http://example.com<>" 

Если вы хотите разрешить только абсолютный URI, используйте UriKind.Absolute.

Приведенный ниже пример не будет разбираться.

+0

Интересно, я думаю, что я не думал об этом как о папке. Я пытаюсь проверить URL-адреса веб-сайтов, поэтому я не думал о путях папок. Благодаря! –

+3

Это может быть относительный URI на веб-сайте. Например. если вы находитесь на http: // example.com/', этот относительный URL-адрес относится к' http: // example.com/NotAURL'. –

+0

Да, это то, что я сделал - переключил его на UriKind.Absolute. Еще раз спасибо. –