2015-05-26 29 views
4

我有使用ASP.NET Web窗體編寫的網頁。整個頁面正文包裝在一個form標籤中,在提交時,它將回復一個Excel文件而不是HTML頁面。該頁面還包含觸發表單提交的JavaScript。普通的瀏覽器通過詢問保存Excel文件的位置(Awesomium也這樣做)來應對這種情況。使用Awesomium ASP.NET Web Form回發後自動下載

我無法修改頁面,但我想自動下載Excel文件。我無法使用HTTP客戶端,因爲上面提到的JavaScript計算了許多複雜的事情來模擬;每次調用該函數時,都會爲該表單返回一個不同的操作值。

我目前使用Awesomium.net,並已配置它開始下載。使用Fiddler我看到文件的下載開始正確。不幸的是,它似乎沒有完成:(或者,該文件被檢索,但在Awesomium.net中沒有任何變化:沒有事件被激發通知我下載已完成,我不知道在哪裏檢索此文件。

我懷疑這是因爲返回的MIME類型不text/html,但反而application/vnd.ms-excel。我的猜測是,Awesomium期望一個HTML文件,不知道如何處理Excel文件它試圖展現一個「保存作爲模態對話框,但是因爲它在無頭服務中使用,所以沒有彈出窗口。

因此,我沒有收到任何事件(或者我正在查找錯誤的地方),而且它不是「可以通過編程來確定文件何時到達。

有沒有辦法解決這個問題?也許攔截所有的回覆? 我需要以編程方式控制「另存爲」對話框並選擇保存文件的位置。

+0

您是否嘗試訂閱'WebCore.Download'? http://docs.awesomium.net/html/E_Awesomium_Core_WebCore_Download.htm – BjarkeCK

+0

我之前沒有使用這個Awesomium產品,但是有什麼理由不以傳統方式使用Content-Disposition? –

+0

webcore.download是我第一次嘗試:但問題是,事件從來沒有觸發:因爲我聲明,當我下載這個文件時,web.core中沒有事件被觸發。 –

回答

0

我已經找到了更多的困難在解決此問題的工作 第一:因爲它看起來,完全不知道給我一個理由的響應不被截獲fiddlerSDK我不能修改內容處置標頭,我用作代理。無論如何,幸好,該請求被攔截。 所以我的解決方法(非常髒)是在代理中攔截awesomium所做的請求,將所有標頭和餅乾分開復制並中止它。現在,Awesomium不再期待任何回覆。 但我已經掌握了它在我手中用於請求的所有信息。 我已經制作了一個新的HttpRequestMessage,我用HttpClient發送它。 這樣我也可以更好地處理答覆,通過直接在內存中處理它,而不必將文件保存到磁盤,然後再次拾取它。

這段經歷並不是那麼令人愉快,但終於奏效了。幸運的是,這項工作每天只需要運行一次,所以表現並不重要,我希望找到一個更好的解決方案,但我找不到比這更好的解決方案。幸運的是,它的工作和工作時間100%,所以我想我可以辦理登機手續並推送今晚!