我有WCF服務來處理從rdlc文件呈現報告的請求。我如何知道用戶是否按f5或不要處理
我的問題: 用戶打印的報告,然後當處理是在中間,用戶按下F5刷新。
結果,我們有兩種可能的結果:
用戶重印時,上次報告的處理仍在運行報告。
用戶在處理完上一個報告時重新編寫報告。
有了上述兩種情況,我該如何檢測哪一種適用?
我有WCF服務來處理從rdlc文件呈現報告的請求。我如何知道用戶是否按f5或不要處理
我的問題: 用戶打印的報告,然後當處理是在中間,用戶按下F5刷新。
結果,我們有兩種可能的結果:
用戶重印時,上次報告的處理仍在運行報告。
用戶在處理完上一個報告時重新編寫報告。
有了上述兩種情況,我該如何檢測哪一種適用?
基本上你需要一種方法來在請求之間進行同步。這不是最初可能的,因爲你的服務實例都沒有相互引用。
你可以做的是replace the default dependency resolver with your own。這將使您能夠控制您的服務實例如何實例化。
你再有一對夫婦的選擇
所以你的打印方法看起來是這樣的(僞):
public ReturnType PrintReport(ReportId, UserId) {
If This.SyncObject.ReportRunning(ReportId, UserId) {
//Whatever you want - throw an exception? Wait for running report to finish?
}
This.SyncObject.AddReport(ReportId, UserId)
//Process as usual
This.SyncObject.RemoveReport(ReportId, UserId)
}
顯然你需要確保的報告沒有得到「卡」在syncobject如果異常拋出時打印/等...
報告打印客戶端(例如通過服務與PrintMe()JavaScript)或服務器端的PDF? – Basic
該報告由WCF服務呈現,並在服務器上 – TPL