2011-10-05 83 views
-1

这段代码在控制台应用程序和WinForm应用程序中运行完美。为什么此代码在WinForms中运行,但不在ASP.NET中运行?

我想使用ASP.NET网站,数据不能使用httpwebrequest被retreived在相同的逻辑。

请让我知道如何解决这个问题。有什么比我能做得更好的吗?我标出了导致问题的线路。

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) 
    { 
    } 
} 

在此先感谢您。

+1

Application.Run一般只Winforms中的应用程式。请参阅:http://stackoverflow.com/questions/3034084/what-application-run-does –

+0

为什么你想要一个窗体控件在asp.net环境中工作? – deostroll

+0

刮去一个网站,但它不是纯HTML,它加载脚本约30秒,然后数据显示,所以我用一个浏览器控件。当所有被加载时它进入documentcompletedevent,所以我可以得到结果。有没有其他方法?现在想在网站上在线运行相同的东西,因此需要帮助。 –

回答

1

我会建议使用此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(); 
} 
0

你必须去了解它的另一种方式,因为应用程序仅在Windows.Form类的上下文中有效。即使它工作,所有Application.Run都会运行一个不执行任何操作的线程。

我强烈建议你这样保持一个桌面应用程序,你正在尝试做的,是不是真的适合于Web应用程序。

如果您需要帮助,您必须向我们提供更多信息。你在这点上的代码很少有任何实质内容。

+0

它看起来像OP只是想做一些刮,这是完全适合于Web应用程序。它不能像在Windows应用程序中那样完成。 –

相关问题