Asp.net ASP中的WebBrowser控件不';出版时不起作用

Asp.net ASP中的WebBrowser控件不';出版时不起作用,asp.net,vb.net,Asp.net,Vb.net,我有一个带有WebBrowser控件的ASP页面,该页面位于网站上,登录到该网站,并被重定向到更新数据库的其中一个页面。当我在我的机器上运行它时,一切正常,但当我发布我的网站时,代码正在执行,但数据库没有更新(我可以看到线程正在休眠)。但我不确定是否进行了重定向。代码如下: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim thread As N

我有一个带有WebBrowser控件的ASP页面,该页面位于网站上,登录到该网站,并被重定向到更新数据库的其中一个页面。当我在我的机器上运行它时,一切正常,但当我发布我的网站时,代码正在执行,但数据库没有更新(我可以看到线程正在休眠)。但我不确定是否进行了重定向。代码如下:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim thread As New Thread(Sub()
                                 Using browser As New WebBrowser()
                                     browser.AllowNavigation = True
                                     browser.Navigate("https://www.website.com?redirect_uri=http://mywebsite.com/myPage.aspx")
                                     AddHandler browser.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf DocumentCompleted)
                                     While browser.ReadyState <> WebBrowserReadyState.Complete
                                         System.Windows.Forms.Application.DoEvents()
                                     End While
                                 End Using
                             End Sub)
    thread.SetApartmentState(ApartmentState.STA)
    thread.Start()
    thread.Join()
End Sub
Private Sub DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs)
        Dim browser As WebBrowser = TryCast(sender, WebBrowser)
    browser.Document.GetElementById("username").SetAttribute("value", "email@hotmail.com")
    browser.Document.GetElementById("password").SetAttribute("value", "password")
    browser.Document.All.GetElementsByName("authorize").Item(0).InvokeMember("click")
    Thread.Sleep(6000)
End Sub
Protected Sub Page_Load(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
将螺纹尺寸调整为新螺纹(Sub()
将浏览器用作新的WebBrowser()
browser.AllowNavigation=True
浏览器。导航(“https://www.website.com?redirect_uri=http://mywebsite.com/myPage.aspx")
AddHandler browser.DocumentCompleted,新WebBrowserDocumentCompletedEventHandler(AddressOf DocumentCompleted)
While browser.ReadyState WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
结束时
终端使用
末端接头)
SetApartmentState(ApartmentState.STA)
thread.Start()
thread.Join()
端接头
私有子文档已完成(发件人作为对象,e作为WebBrowserDocumentCompletedEventArgs)
将浏览器变暗为WebBrowser=TryCast(发件人,WebBrowser)
browser.Document.GetElementById(“用户名”).SetAttribute(“值”)email@hotmail.com")
browser.Document.GetElementById(“密码”).SetAttribute(“值”、“密码”)
browser.Document.All.GetElementsByName(“授权”).Item(0).InvokeMember(“单击”)
线程。睡眠(6000)
端接头

End Class

当页面的http请求完成时,您的线程将被终止


不要为此使用WebBrowser控件。请改用System.Net.WebClient对象或System.Net.HttpWebRequest/HttpWebResponse对象。

我之所以使用WebBrowser,是因为它使登录更容易。我没有成功使用WebRequest/Repsonse。你知道Webclient是否可以做这样的事情吗?@user3468982诀窍(对于Webclient和HttpRequest/Response)是跨请求持久保存CookieCollection。在webforms中使用Winforms对象是个坏消息。我真的不需要cookie,我需要的只是登录后重定向url中返回的值cookie是web服务器如何知道您登录的。这是WebBrowser控件为您所做的事情,您无法通过httpwebreqeust了解