使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

徵狀

在 Windows 7 Service Pack 1 (SP1)、Windows Server 2008 R2 SP1 或 Windows Server 2008 SP2 上安裝適用於 .NET Framework 4.6、4.6.1、4.6.2、4.7、4.7.1 和 4.7.2 的 2018 年 7 月 .NET Framework 安全性和品質彙總套件之後,您在符合下列條件的 .NET Framework 應用程式中發現錯誤:

  • 應用程式使用 System.Transaction.TransactionScope 類別的執行個體,其中的交易流程是透過傳遞 TransactionScopeAsyncFlowOption.Enabled 至建構函式的方式啟用。

  • 當其中一個交易範圍為作用中時,應用程式發出一個或多個遠端呼叫。 在這個情況中,遠端呼叫是指抵達伺服器物件前周遊於 Transparent Proxy 的任何呼叫。 遠端呼叫的範例包括對其他應用程式網域的呼叫,以及透過遠端通道 (例如 System.Runtime.Remoting.Channels 命名空間中定義的用戶端通道) 發出的呼叫。

  • 在遠端呼叫之後,System.Transactions.Transaction.Current 傳回 null 值,而非遠端呼叫之前傳回的值。

因應措施

若要暫時略過這個問題,請嘗試下列任何方法:

  • 對於每個啟用交易流程的交易範圍,請變更應用程式,以確保交易範圍為作用中時,所執行的程式碼中不會發出任何遠端呼叫。 當您判斷交易範圍是否包含任何遠端呼叫時,請考量下列方針:

    • 對靜態方法的呼叫絕不是遠端呼叫。

    • 若是對目標物件上執行個體方法的呼叫,只有當目標物件是 Transparent Proxy 時,才是遠端呼叫。

    • 若是對建構函式的呼叫,只有當建構物件是 Transparent Proxy 時,才是遠端呼叫。

    注意:您永遠可以使用 System.Runtime.Remoting.RemotingServices.IsTransparentProxy 方法來確認物件是否為 Transparent Proxy。

  • 移除 TransactionScopeAsyncFlowOption.Enabled 建構函式引數,以停用交易流程。

    警告

    如果任何 "await" 作業在交易範圍為作用中時執行,此因應措施可能會造成其他錯誤。

  • Transaction.Current 屬性不會自動序列化為遠端呼叫, 而是必須以參數形式傳遞。 如果遠端呼叫未以參數形式傳遞交易,並且未在遠端呼叫期間對用戶端發出回呼,您可以在使用 TransactionScopeOptions.Suppress 選項的新 TransactionScope 物件內建立遠端呼叫。 在這個隱藏交易範圍內,Transaction.Current 屬性具有 null 值。

狀態

我們已知這個問題,目前正在研究解決方案。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×