2012-12-06 89 views
2

我的代碼(使用SharePoint對象模型),在兩種模式中運行和平:從普通控制檯應用程序或從單元測試轉輪在WCF下運行代碼與「常規」代碼執行,有什麼不同?

  1. 運行。在這種情況下,代碼有效。
  2. 在WCF服務中運行。 WCF服務託管在控制檯應用程序中。沒有特殊的安全配置,默認情況下都是。執行失敗。

這兩種模式的執行有什麼區別,尤其是與安全性(例如上下文,主體)有關?

SharePoint對象模型是出現問題的地方,但這不是問題的主要目標。一般情況下的差異更有意思。如果您需要更多細節,請告訴我,我會更新問題。

差異至今:

  1. Thread.CurrentThread.IsThreadPoolThread(#1 - 錯誤,2 - 真),這顯然來自線程池
+1

發佈失敗的細節會很有幫助。 – Restuta

+0

失敗是SharePoint特有的,SharePoint從不給出錯誤消息,確實意味着它說的是什麼。例如在我的情況下,我向資源添加聲明,並且錯誤消息是「用戶不存在或不是唯一的」。這是因爲聲明實際上是SharePoint中的用戶對象。此外,錯誤是COMException,所以我甚至不能反編譯看到真正的問題。 –

+0

WCF控制檯應用程序是否在SharePoint服務器上運行?客戶端對象模型還是服務器對象模型? –

回答

-1

在SharePoint對象COM下的基礎引擎蓋。 WCF默認爲多線程,與COM不兼容。

+0

我會指出你說異常是COMException,這意味着該模型在某個級別上與COM對象進行交互。 –

+0

我不確定我以前的評論在哪裏。但不管怎麼說。 COM和多線程之間沒有不兼容。正如我在之前的評論中所說的那樣,ASP.NET完全是多線程的,但對SharePoint COM對象模型完全正常。 –