如何在C#WebBrowser控件中获取重定向url

如何在C#WebBrowser控件中获取重定向url,c#,javascript,asp.net,asp.net-mvc,webbrowser-control,C#,Javascript,Asp.net,Asp.net Mvc,Webbrowser Control,我有一个网页,加载,做一些计算,然后做一个JavaScript重定向到另一个网页。它看起来像这样: <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> $(document).ready(function() { window.location = "http://www.mynewurl.com"; }); </head> <body> Something

我有一个网页,加载,做一些计算,然后做一个JavaScript重定向到另一个网页。它看起来像这样:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
$(document).ready(function() {
    window.location = "http://www.mynewurl.com";
});
</head>
<body>
Something
</body>
</html>
因此,当我加载webBrowser控件时,我会将其发送到
http://www.mysite.com/startpage.html
。它将javascript重定向到
http://www.mynewurl.com
。我想以某种方式在我的c#代码中捕获该url


关于如何实现这一点,有什么想法吗?

HttpWebRequest.Referer?或者可以将您需要的任何数据附加为查询字符串。

HttpWebRequest.Referer?或者可以将您需要的任何数据附加为查询字符串。

我决定回答这篇文章,即使它发布已经快2年了,因为它在搜索引擎(如谷歌)的顶级结果中列出,但没有为我提供解决方案

经过一些搜索,我找到了这个问题的解决方案,可以在这里找到:

这解决了当CancelEventArgs的Cancel属性设置为TRUE时获取新窗口URL的问题


希望这可能会帮助其他人解决这个问题,因为它在.NET平台上还没有得到解决…

我决定回答这篇文章-即使它发布已经快2年了-因为它在搜索引擎(如谷歌)的顶级结果中列出,但没有为我提供解决方案

经过一些搜索,我找到了这个问题的解决方案,可以在这里找到:

这解决了当CancelEventArgs的Cancel属性设置为TRUE时获取新窗口URL的问题


希望这可以帮助其他人解决这个问题,因为它在.NET平台上还没有得到解决…

我注意到我可以使用Thread.Sleep(10000);在while循环加载之后,它实际上得到了我的值。我想浏览器接受javaScript的响应需要很长时间。显然,这不是一个可以接受的等待时间。正在寻找另一个解决方案。我已决定不再继续此项工作。我不知道如何关闭此帖子。我注意到我可以使用Thread.Sleep(10000);在while循环加载之后,它实际上得到了我的值。我想浏览器接受javaScript的响应需要很长时间。显然,这不是一个可以接受的等待时间。正在寻找另一个解决方案。我已决定不再继续此项工作。我不确定如何关闭此帖子。该url从microsoft wesbsite返回404。该url从microsoft wesbsite返回404。
WebBrowser webBrowser = new WebBrowser
                                    {
                                        ScrollBarsEnabled = false,
                                        Size = new Size(Width, Height),
                                        ScriptErrorsSuppressed = true
                                    };

    webBrowser.NewWindow += WebBrowserNewWindow;
    webBrowser.Navigate("http://www.mysite.com/startpage.html");


    //wait for it to load
    while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }

    Uri myUrl = webBrowser.Url;  //This is how I have been trying to get it.