簡體   English   中英

Task.CompletedTask屬性上的MethodAccessException

[英]MethodAccessException on Task.CompletedTask property

我正在使用小型wpf應用程序,並且其中一個用戶遇到以下異常:

System.MethodAccessException: 
Attempt by method "xxx.HttpConfirmation.Invoke()" to access method "System.Threading.Tasks.Task.get_CompletedTask()" failed.
at xxx.HttpConfirmation.Invoke()
at xxx.RequestPipeline.<ProcessQueuedRequests>d__11.MoveNext()

根據MSDN文檔,在以下情況下會引發此類異常:

  • 通過使用反射,可以從部分受信任的代碼訪問私有,受保護或內部方法,這些方法無法從常規編譯代碼中訪問。
  • 從透明代碼訪問安全性至關重要的方法。
  • 類庫中方法的訪問級別已更改,並且未重新編譯引用該庫的一個或多個程序集。

自從引入Task.get_CompletedTask()以來,它就是公開的,而且我也沒有使用反射來訪問該屬性。

我也認為代碼安全性/透明性沒有問題,因為只有一個用戶遇到此問題。

Task.CompletedTask行上引發異常:

public class HttpConfirmation
{
    public static Task Invoke()
    {
        using (var client = new WebClient())
        {
            try
            {
                // Send the request and don't wait for the response.
                client.UploadStringTaskAsync("http://sampleUrl.com", string.Empty);
            }
            catch
            {
                // ignore
            }
        }

        return Task.CompletedTask;
    }
}

關於什么可能導致異常的任何想法?

問題是客戶安裝了.NET 4.5.2,並且該程序的目標是.NET 4.6。 盡管我仍然不知道為什么會拋出System.MethodAccessException確切信息,因為3種記錄情況下都沒有發生拋出此異常的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM