无法等待 Void - 异步方法 C# 中的参数
Cannot Await Void - Parameter within Async Method C#
我正在尝试测试 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
中的参数作为无效方法本身。
我该如何解决这个问题?示例代码具体如上所写,我是不是做错了什么?
他们的文档不正确。它是异步的(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;
}
}
我正在尝试测试 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
中的参数作为无效方法本身。
我该如何解决这个问题?示例代码具体如上所写,我是不是做错了什么?
他们的文档不正确。它是异步的(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;
}
}