2016-03-04 5 views
1

Я написал приложение C# Winform, которое выполняет задачу без ввода пользователя, и я хочу запустить эту программу по расписанию (например, каждый день в 1 час ночи). Я хочу настроить программу на Azure, чтобы она работала на облаке.Как запустить C# Winform в Azure по расписанию?

До сих пор, я успешно запускать приложения C# консоли в Azure Webjobs (сервис под Azure Web Apps) и тех, кто работает хорошо, но если я пытаюсь загрузить и запустить 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 является абсолютно правильным, и она работает, когда я запускаю его на моем рабочем столе, но я думаю, что-то об изменении URL-адресов в C# Webbrowser не работает.

Так что мой вопрос в том, что служба Azure позволит мне запустить winform по расписанию? И если не Лазурь, я возьму Амазонку или какую-нибудь другую услугу. (Я не хочу иметь свой собственный выделенный физический компьютер, чтобы запустить эту программу Благодаря

+0

Маркировка вашего основного метода с '[STAThread ] 'может помочь. –

+0

Любопытно, почему вы пытаетесь открыть браузер из Интернета Job - нет пользовательского интерфейса, к которому вы сможете получить доступ. –

+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

 Смежные вопросы

  • Нет связанных вопросов^_^