0
일괄 요청을위한 미들웨어를 작성하려고합니다 .net 2.0. 지금까지 요청을 분할하고 각 요청을 컨트롤러로 전달합니다. 컨트롤러가 값을 반환하지만 어떤 이유로 컨트롤러에 구문 분석 된 생성 된 컨텍스트의 응답이 나에게 몸에 NullStream을 제공하기 때문에 설치에 놓친 것이 있다고 생각합니다.생성 된 컨텍스트에 대한 응답이 나에게 NullStream을 계속 제공함
코드는 다음과 같습니다
var json = await streamHelper.StreamToJson(context.Request.Body);
var requests = JsonConvert.DeserializeObject<IEnumerable<RequestModel>>(json);
var responseBody = new List<ResponseModel>();
foreach (var request in requests)
{
var newRequest = new HttpRequestFeature
{
Body = request.Body != null ? new MemoryStream(Encoding.ASCII.GetBytes(request.Body)) : null,
Headers = context.Request.Headers,
Method = request.Method,
Path = request.RelativeUrl,
PathBase = string.Empty,
Protocol = context.Request.Protocol,
Scheme = context.Request.Scheme,
QueryString = context.Request.QueryString.Value
};
var newRespone = new HttpResponseFeature();
var requestLifetimeFeature = new HttpRequestLifetimeFeature();
var features = CreateDefaultFeatures(context.Features);
features.Set<IHttpRequestFeature>(newRequest);
features.Set<IHttpResponseFeature>(newRespone);
features.Set<IHttpRequestLifetimeFeature>(requestLifetimeFeature);
var innerContext = _factory.Create(features);
await _next(innerContext);
var responseJson = await streamHelper.StreamToJson(innerContext.Response.Body);
내가 innerContext.Response.Body가 설정되어 있지 않은 이후, 나는 설정에서 누락 무엇인지 모르겠어요.
내가 테스트를 위해 사용하는 엔드 포인트 중 하나와 그 당한다 내가 오류, 또는 작동하는 두 가지 오류를 발견했습니다이
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}