Cześć wszystkim. Z góry przepraszam za opowiadanie ale chciałem jak najlepiej zobrazować problem i próby.
Natknąłem się na problem, który polega na braku wykonania Javascriptu w momencie puszczenia requesta przez HttpWebRequest. Doczytałem się postu na stacku, gdzie było napisane abym wywołał link przez klasę WebBrowser, gdyż jest to taka przeglądarka, która powinna wykonać Javascript. W tym momencie wytworzył się następny problem. Piszę aplikacje w ASP.NET MVC. W kontrolerze potrzebuje wykonać tą akcje WebBrowserem w pętli foreach, lecz występuje bład przy próbie stworzenia nowego obiektu klasy WebBrowser.
ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot
be instantiated because the current thread is not in a
single-threaded apartment.
Pobawiłem się i wrzuciłem tworzenie obiektu do pliku Global.asax do metody Application_Start, która wykonuje się tylko raz na całe życie aplikacji. Żaden wyjątek mi nie wyskoczył, więc spróbowałem przekazać obiekt klasy WebBrowser przez metody do kontrolera i spróbować operować na tym obiekcie ale w momencie wywołania browser.Navigate wystąpił następny błąd podobny do tego pierwszego. Przeniosłem więc całą logikę requesta do Application_Start i wszystko działa prawidłowo ale problem jest taki, że mogę wykonać to tylko raz. Tutaj zaczyna się moje pytanie.
W jaki sposób mogę użyć WebBrowsera tak aby nie występowały żadne wyjątki i abym mógł użyć go i metody Navigate w pętli foreach w kontrolerze? Potrzebuje wykonać tą akcje dla każdego użytkownika na bazie i nie tylko raz na całe życie aplikacji a co jakiś czas. Nie mogę wymyślić jak to obejść. Macie może pomysł jak mogę do tego dojść? Z góry bardzo dziękuje.