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

时间:2010-02-18 14:56:57

标签: c# javascript asp.net asp.net-mvc webbrowser-control

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

http://www.mysite.com/startpage.html

<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控件的asp.net MVC应用程序,我的目标能够从我的C#WebBrowser控件中检索http://www.mynewurl.com

我的WebBrowser代码如下:

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.

因此,当我加载webBrowser控件时,我将其发送到http://www.mysite.com/startpage.html。它会将javascript重定向到http://www.mynewurl.com。我想以某种方式在我的c#代码中捕获该URL。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

http://connect.microsoft.com/VisualStudio/feedback/details/115195/webbrowser-newwindow-event-does-not-give-the-url-of-the-new-window-in-eventargs#details

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

希望这可以帮助其他人解决这个问题,因为它尚未在.NET平台中得到解决......