2013-03-25 27 views
0

我想我對asp或windows服務的工作原理並不瞭解。調用網頁的Windows服務

我想在我的asp.net項目上創建計劃的報告。我現在在本地機器上運行了一個Windows服務,稍後它將在專用服務器上運行。它應該每隔幾分鐘請求一個ASP頁面,並且被請求時,該頁面當前通過page_load向我發送電子郵件。這裏是我在windows服務中用來調用網頁的代碼。

HttpWebRequest request= (HttpWebRequest)WebRequest.Create(address); 
request.Method = "GET"; 
response = request.GetResponse(); 
reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); 
result = reader.ReadToEnd(); 

我知道它會得到這麼多,因爲我一直在每一步都有服務給我發電子郵件。但是,當服務請求頁面時,網頁不執行任何操作。如果我將asp頁面的地址粘貼到瀏覽器中,那麼我會從該頁面收到一封電子郵件。 ASP.NET網站在我的電腦上以VS調試模式運行。服務是否必須首先打開瀏覽器?

如果頁面需要瀏覽器才能工作,有沒有辦法讓我在我的asp項目中運行代碼而無需定期打開瀏覽器?

+0

你打電話myReq.GetResponse()調用你的網頁? – 2013-03-25 21:12:22

+0

我添加了一些代碼,但我現在不是。同樣的交易。 – 2013-03-25 21:13:39

+0

嘗試在你的頁面上創建一個新的方法發送電子郵件,並用[WebMethod]裝飾它,然後調用'...//' – 2013-03-25 21:17:24

回答

1

你(幾乎)無法打開瀏覽器從一個服務的Windows,以及這是做錯了。 您可以將您的電子郵件發送到服務?

+0

嗯,電子郵件只是一些可見動作的佔位符,我想運行一堆報告。 – 2013-03-25 21:16:04

+0

你可以發佈你的asp代碼嗎?可能是由IsPostBack驗證造成的?導致每個httprequest都是新的.page加載(而不是回發)。 – evgenyl 2013-03-25 21:20:51

+0

你是說它應該工作,然後呢?雖然我沒有在我的頁面上進行回發檢查。 – 2013-03-25 22:02:34

1

,你可以簡單地與任務調度

//Create a new scheduled task to open a browser eg: internet explorer then right 
//click properties, in the run window type in with the quotes an example 
"C:\Program Files\Internet Explorer\iexplore.exe" "http://www.mywebsite.com/something/myactionpage.chtml" 
//If you want to open the page with another browser, just change the first path 

或類似的

Best Timer for using in a Windows service

+0

適用於我作爲一個簡單,直接的解決方案。 – 2013-10-29 19:06:58