2011-10-05 121 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應用程序中那樣完成。 –

相關問題