2016-03-04 44 views
1

我寫了一個C#Winform應用程序,該應用程序在沒有用戶輸入的情況下執行任務,我想按計劃運行此程序(例如,每天凌晨1點)。我想在Azure上設置該程序,以便在雲上運行。如何按計劃在Azure中運行C#Winform?

到目前爲止,我已經成功地運行在Azure中Webjobs(下Azure的Web應用程序服務)C#控制檯應用程序和那些做工精細,但如果我嘗試上載和運行一個WinForm我得到的錯誤:

[03/03/2016 17:27:12 > 252553: ERR ] Unhandled Exception: System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. 
[03/03/2016 17:27:12 > 252553: ERR ] at System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers) 
[03/03/2016 17:27:12 > 252553: ERR ] at System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers) 
[03/03/2016 17:27:12 > 252553: ERR ] at System.Windows.Forms.WebBrowser.set_Url(Uri value) 
[03/03/2016 17:27:12 > 252553: ERR ] at WebBrowserTest.Form1.InitializeComponent() 
[03/03/2016 17:27:12 > 252553: ERR ] at WebBrowserTest.Form1..ctor() 
[03/03/2016 17:27:12 > 252553: ERR ] at WebBrowserTest.MainStartup.Main() 
[03/03/2016 17:27:12 > 252553: SYS INFO] Status changed to Failed 

在日誌中。在代碼中,錯誤是特定於像我嘗試調用webBrowser.Navigate函數的行。

Uri uri = new Uri("https://www.website.com"); 
webBrowser1.Navigate(uri); 

URL本身是絕對正確的,當我在我的桌面上運行它,它的工作原理,但我想講講在C#中的Webbrowser不起作用改變網址。

所以我的問題是,什麼Azure服務會讓我按計劃運行一個winform?如果不是Azure,我會帶亞馬遜或其他服務。 (我不希望有自己的專用物理計算機必須運行這個程序,感謝

+0

標記你用'[STAThread主要方法]'屬性可能有幫助 –

+0

只是好奇你爲什麼試圖從Web打開瀏覽器工作 - 沒有用戶界面可以訪問。 –

+0

您可以將您的應用程序轉換爲控制檯應用程序嗎?我不認爲Winform會工作 –

回答

3

當運行你的應用程序在沙箱中運行的webjob作爲described here在那裏說除其他interresting事情:。

For the sake of radical attack surface area reduction, the sandbox prevents almost all of the Win32k.sys APIs from being called, which practically means that most of User32/GDI32 system calls are blocked. For most applications this is not an issue since most Azure Web Apps do not require access to Windows UI functionality (they are web applications after all).

所以,如果你想運行一個UI應用程序,你將不得不做它在虛擬機。一Cloud Service很可能是要走的路還是隻是一個普通的虛擬機。

+0

嗯,我正在研究虛擬機,它並不是真的需要。我的公司在Azure中具有某些功能,虛擬機和雲服務不在其中。我想我會接受這個答案,因爲你聲明Winforms不能在webjobs下工作。 – Kubera