2016-02-27 166 views
3

获取原始内容我试图在asp.net核心1.0中获得Request.Body的原始内容,我想知道将整个机构作为byte[]的正确方法是什么。如果您有类似情况的任何经验并知道“正确”的做法,请分享。我会很感激。 谢谢先进。asp.net核心1.0 mvc。从Request.Body

回答

3

Request.Body是一个流。该流有Read方法,该方法需要一个可以读取数据的字节数组缓冲区。由于您可能不知道流的大小,即使不是所有内容都可用,您需要在循环中执行此操作,直到您读取流中的所有数据为止 - this stackoverflow答案显示如何做到这一点(如果您不'要阻止你的线程可以使用ReadAsync)。另外 - 如果你想阅读一个字符串的内容,你可以使用StreamReader类。

0

我用这个代码...

using (var requestBodyStream = new MemoryStream()) 
{ 
    var body = request.Body; 
    await request.Body.CopyToAsync(requestBodyStream); 
    requestBodyStream.Seek(0, SeekOrigin.Begin); 
    requestPayload.Body = await new StreamReader(requestBodyStream).ReadToEndAsync(); 
}