簡體   English   中英

無法等待 Void - 異步方法 C# 中的參數

[英]Cannot Await Void - Parameter within Async Method C#

我正在嘗試測試Titanium Proxy Server的示例。 但是,在完全復制“自述”部分中的示例后,我遇到了無法解決的錯誤。

在這個方法中:

public async Task OnRequest(object sender, SessionEventArgs e)
{
    Console.WriteLine(e.WebSession.Request.Url);
    var requestHeaders = e.WebSession.Request.Headers;
    var method = e.WebSession.Request.Method.ToUpper();
    if ((method == "POST" || method == "PUT" || method == "PATCH"))
    {
        byte[] bodyBytes = await e.GetRequestBody();
        await e.SetRequestBody(bodyBytes);
        string bodyString = await e.GetRequestBodyAsString();
        await e.SetRequestBodyString(bodyString);
        e.UserData = e.WebSession.Request;
    }
}

我收到了await e.SetRequestBodyString(bodyString);行的錯誤await e.SetRequestBodyString(bodyString); await e.SetRequestBody(bodyBytes); .

有錯誤消息指出Cannot await 'void'並且它將方法SessionEventArgs的參數稱為無效方法本身。

我該如何解決? 我做錯了什么,因為示例代碼特別像上面寫的那樣?

他們的文檔不正確。 這是異步(SetRequestBody,SetRequestBodyString),但現在它的同步,你會得到異常喜歡這個

public async Task OnRequest(object sender, SessionEventArgs e)
{
    Console.WriteLine(e.WebSession.Request.Url);
    var requestHeaders = e.WebSession.Request.Headers;
    var method = e.WebSession.Request.Method.ToUpper();
    if ((method == "POST" || method == "PUT" || method == "PATCH"))
    {
        byte[] bodyBytes = await e.GetRequestBody();
        e.SetRequestBody(bodyBytes);
        string bodyString = await e.GetRequestBodyAsString();
        e.SetRequestBodyString(bodyString);
        e.UserData = e.WebSession.Request;
    }
}

暫無
暫無

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

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