为什么这段代码可以在WinForms中运行,而不能在ASP.NET中运行?

本文关键字:运行 不能 ASP NET 段代码 WinForms 代码 为什么 | 更新日期: 2023-09-27 18:10:24

这段代码在控制台应用程序和WinForm应用程序中运行完美。

我想在ASP上使用相同的逻辑。. NET网站,无法使用httpwebrequest检索数据。

请告诉我如何解决这个问题。还有什么比这更好的吗。我已经在产生问题的行上做了标记。

private void runBrowserThread()
{
    var th = new Thread(() =>
    {
        var br = new WebBrowser();
        br.DocumentCompleted += browser_DocumentCompletedNew;
        br.Navigate("https://www.linkedin.com/uas/login");
        Application.Run();    // ERROR ON THIS LINE 
    });
    th.SetApartmentState(ApartmentState.STA);
    th.Start();
}
void browser_DocumentCompletedNew(object sender, 
                                  WebBrowserDocumentCompletedEventArgs e)
{
    var br = sender as WebBrowser;
    if (br.Url == e.Url)
    {
    }
}

提前感谢。

为什么这段代码可以在WinForms中运行,而不能在ASP.NET中运行?

我建议使用System.Net.WebClientSystem.Net.HttpWebRequest

下面是一个使用HttpWebRequest的简单示例:

WebRequest request = HttpWebRequest.Create("https://www.linkedin.com/uas/login");
request.Method = WebRequestMethods.Http.Get;
using (WebResponse response = request.GetResponse())
{                
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string responseText = reader.ReadToEnd();
    reader.Close();
}

您必须采用另一种方式,因为Application仅在Windows上下文中有效。表单类。即使它在工作,所有的应用程序。Run要做的就是运行一个什么都不做的线程。

我强烈建议你把它作为一个桌面应用程序,你正在尝试做的事情并不适合一个web应用程序。

如果你需要帮助,你必须向我们提供更多的信息。此时您拥有的代码几乎没有做任何实质性的事情。