c# - 无法等待无效 - 异步方法 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.SetRequestBody(bodyBytes);
.
有错误消息状态Cannot await 'void'
,它将方法中的参数SessionEventArgs
称为 void 方法本身。
我该如何解决这个问题?我做错了什么,因为示例代码具体如上所写?
解决方案
他们的文档不正确。它是异步的(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;
}
}
推荐阅读
- java - 如何在android studio上制作一个按钮来减少和相反的布局?
- javascript - 如何找出可以从 npm 包中导出的内容
- python - 通过 Python 预览 Outllok 电子邮件
- c++ - .EXE 可以使用间接导入的 DLL 中的符号吗?
- c++ - 在 cmake add_definition 中定义字符串文字宏
- javascript - CORS 块:WebApp POST 到工作表
- python - ValueError: TensorFlow 要求必须在循环前定义以下符号
- powershell - powershell 反壳 AV 规避
- python - CSV 上带有坏行错误的文件名
- python - 无法解析值
带有美丽汤的标签