我StreamReader稍后将使用它来反序列化我的请求,如下所示 -
这s是Stream对象 -
using (var reader = new StreamReader(s))
{
using (var jsonReader = new JsonTextReader(reader))
{
var ser = new JsonSerializer();
return ser.Deserialize<T>(jsonReader);
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但现在我试图在控制台上打印实际的请求正文,所以我尝试这样做,但它给了我一个错误 -
using (var reader = new StreamReader(s))
{
string body = reader.ReadToEnd();
// print body on the console which is what I am trying to do
// reset to start of stream
// this line gives me error
s.Seek(0, SeekOrigin.Begin);
using (var jsonReader = new JsonTextReader(reader))
{
var ser = new JsonSerializer();
return ser.Deserialize<T>(jsonReader);
}
}
Run Code Online (Sandbox Code Playgroud)
进行此更改后,我收到错误 -Specified method is not supported.我不确定我在这里做错了什么。
注意:这仅用于调试目的,我想在控制台上打印正文。之后我会删除reader.ReadToEnd();东西。
并非所有流都支持查找。Stream 具有这样的CanSeek属性,在本例中可能就是这样false。
在这种特定情况下,由于您无论如何都将整个消息读取到字符串中,因此您可以从字符串创建 StringReader 并将其传递到 JsonTextReader 而不是 StreamReader。
在其他情况下,您可能需要寻找不同的解决方案。例如,如果您正在读取 ASP.NET Core 请求流,则可以启用缓冲以允许多次读取该流。
| 归档时间: |
|
| 查看次数: |
7603 次 |
| 最近记录: |