簡體   English   中英

如何在計划中在Azure中運行C#Winform?

[英]How to run a C# Winform in Azure on a Schedule?

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

到目前為止,我已成功在Azure Webjobs(Azure Web Apps下的一項服務)中運行C#Console應用程序,這些工作正常,但如果我嘗試上傳並運行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中更改URL是不行的。

所以我的問題是,Azure服務會讓我按計划運行winform? 如果不是Azure,我會接受亞馬遜或其他一些服務。 (我不想讓我自己的專用物理計算機來運行這個程序。謝謝。

運行webjob時,您的應用程序正在沙盒中運行,如此處所述,其中包括其他有趣的內容:

為了減少激進的攻擊面積,沙盒可以防止幾乎所有的Win32k.sys API被調用,這實際上意味着大多數User32 / GDI32系統調用都被阻止了。 對於大多數應用程序而言,這不是問題,因為大多數Azure Web應用程序不需要訪問Windows UI功能(畢竟它們是Web應用程序)。

因此,如果要運行UI應用程序,則必須在VM上執行此操作。 Cloud Service可能是最佳選擇,也可能只是普通的虛擬機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM