2011-06-15 46 views
2

有誰知道是否可以「部署」異步CTP?部分信任環境中的異步CTP

由於Async的很大一部分基本上是編譯器技巧,我認爲預編譯我的應用程序並將其部署到未安裝Async CTP的服務器可能會有效。不幸的是,這似乎並不簡單。我收到以下錯誤消息,當我嘗試調用異步方法:

Task<Result> task = _checker.CheckAsync(input); 

爲「System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1」的類型初始值引發異常。

這不是我期望的錯誤類型,但也許有一些替換程序集可以部署到我的Bin目錄中以解決此問題?我無法在此(生產)機器上安裝Async CTP。

更新: 我已經包括了的InnerException細節,以及:

System.MethodAccessException:由安全透明的方法 嘗試 'System.Runtime.CompilerServices.AsyncTaskMethodBuilder 1<TResult>..cctor()' to access security critical method 'System.Threading.Tasks.TaskScheduler.add_UnobservedTaskException(System.EventHandler 1)' 失敗。 在System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1..cctor()

這似乎是一箇中等信任問題,與其說是異步的問題?

+0

小心評論爲什麼問題是downvoted? – Thorarin 2011-07-10 14:09:03

回答

2

您還需要部署AsyncCtpLibrary.dll。我會預計這是所有需要的......你是否已經部署了你的應用程序?

TypeInitializerException的內部例外是什麼?

編輯:正如你所說,這看起來像一箇中等的信任問題,這將不會通過安裝整個東西解決。這可能值得直接向團隊提出(如果您喜歡,我可以這樣做),以防萬一您的情況在安全性方面不同尋常。

爲了驗證這種情況下,你可以嘗試在你的代碼的某處添加處理程序UnobservedTaskException自己:

TaskScheduler.UnobservedTaskException += (sender, e) => e.SetObserved(); 

這樣做是不異步都使用一個小項目 - 我懷疑它會以相同的方式失敗。如果你可以調整你的安全設置,使其工作,其餘的可能會從那時起工作。

+0

AsyncCtpLibrary.dll自動部署。我已經添加了InnerException的細節,但它似乎是一箇中等信任的問題:( – Thorarin 2011-06-15 06:58:03

+0

@ Thorarin:是的,我懷疑是這樣的,看我的編輯 – 2011-06-15 07:26:26

+0

我已經實現了你的驗證並試圖在'[SecuritySafeCritical]方法,因爲一些文章的建議。事情總是失敗,所以我給你發了一封關於與團隊聯繫的電子郵件。 – Thorarin 2011-06-15 09:11:28