Cannot Await Void - параметр в асинхронном методе C # - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь протестировать пример Titanium Proxy Server .Однако после точного копирования примера в разделе «Read Me» я застрял с ошибкой, которую не могу устранить.

В рамках этого метода:

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.SetRequestBody(bodyBytes);.

Есть сообщения об ошибках Cannot await 'void', и он ссылается на параметр в методе SessionEventArgs как на сам метод void.

Какрешить это?Я делаю что-то не так, как пример кода, как написано выше?

1 Ответ

0 голосов
/ 28 сентября 2018

Их документ неверен.Это был асинхронный (SetRequestBody, SetRequestBodyString), но теперь он синхронизируется, и вы получаете исключение, например this .

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...