C# 如何知道url在webbrowser winforms中导航是否有效

C# 如何知道url在webbrowser winforms中导航是否有效,c#,winforms,C#,Winforms,我正在windows窗体应用程序中基于webbrowser控件制作一个web浏览器 我试图将url地址textbox用于两个目的:导航和搜索,例如在chrome中。 我添加了以下代码: try { Uri urlResult = new Uri(urlText.Text); webbrowser1.Navigate(urlText.Text); }

我正在windows窗体应用程序中基于
webbrowser
控件制作一个web浏览器

我试图将url地址
textbox
用于两个目的:导航和搜索,例如在chrome中。 我添加了以下代码:

            try
            {
               Uri urlResult = new Uri(urlText.Text);
               webbrowser1.Navigate(urlText.Text);

            }
            catch
            {
               webbrowser1.Navigate("http://google.com/search?q=" + urlText.Text);
            }
问题是,当我输入“youtube.com”时,它不能是
Uri
,所以我在谷歌中得到了这个

如何执行此操作? 欢迎提出任何其他建议
thanx提前

问题:在当前代码中,您没有检查URL是否有效。您需要首先验证给定的URL是否可访问

解决方案:创建一个单独的函数来验证url的可访问性(如果成功),然后导航到url,否则在google中打开它

试试这个:

using using System.Net;

private void button3_Click_1(object sender, EventArgs e)
{   
        string url = string.Empty;
        string urlProtocol = "http://"; //or https
        if (!urlText.Text.Trim().Contains(urlProtocol))
            url = urlProtocol + urlText.Text;
        else
            url = urlText.Text;
        if (CheckURL(url))
        {
            Uri urlResult = new Uri(url);
            webbrowser1.Navigate(url);
        }
        else
        {
            webbrowser1.Navigate("http://google.com/search?q=" + urlText.Text);
        }

}

bool CheckURL(string url)
{

    var req = (HttpWebRequest)HttpWebRequest.Create(url);
    bool isURLValid = false;
    req.AllowAutoRedirect = false;
    try
    {
        using (var resp = req.GetResponse())
        {
            var location = resp.Headers["Location"];
            if (!String.IsNullOrEmpty(location))
            {
                isURLValid = true;
            }
        }
    }
    catch
    {
        isURLValid = false;
    }
    return isURLValid;  
}

如果字符串不是以
http://
https://
开头,请尝试在
http://
https://
前加前缀?你试过什么?我试过了,但没有用。然后再试一次。或者解释发生了什么。例如,当我进入door并添加http://,这可能是一个Uri,然后我会收到一条消息“此程序无法显示网页”。请求验证您将要发出的请求是在浪费资源。