本文整理汇总了C#中IOwinRequest.DisableBuffering方法的典型用法代码示例。如果您正苦于以下问题:C# IOwinRequest.DisableBuffering方法的具体用法?C# IOwinRequest.DisableBuffering怎么用?C# IOwinRequest.DisableBuffering使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOwinRequest
的用法示例。
在下文中一共展示了IOwinRequest.DisableBuffering方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InvokeCore
private async Task InvokeCore(IOwinContext context, IOwinRequest owinRequest, IOwinResponse owinResponse)
{
CancellationToken cancellationToken = owinRequest.CallCancelled;
HttpContent requestContent;
bool bufferInput = _bufferPolicySelector.UseBufferedInputStream(hostContext: context);
if (!bufferInput)
{
owinRequest.DisableBuffering();
}
if (!owinRequest.Body.CanSeek && bufferInput)
{
requestContent = await CreateBufferedRequestContentAsync(owinRequest, cancellationToken);
}
else
{
requestContent = CreateStreamedRequestContent(owinRequest);
}
HttpRequestMessage request = CreateRequestMessage(owinRequest, requestContent);
MapRequestProperties(request, context);
SetPrincipal(owinRequest.User);
HttpResponseMessage response = null;
bool callNext;
try
{
response = await _messageInvoker.SendAsync(request, cancellationToken);
// Handle null responses
if (response == null)
{
throw Error.InvalidOperation(OwinResources.SendAsync_ReturnedNull);
}
// Handle soft 404s where no route matched - call the next component
if (IsSoftNotFound(request, response))
{
callNext = true;
}
else
{
callNext = false;
// Compute Content-Length before calling UseBufferedOutputStream because the default implementation
// accesses that header and we want to catch any exceptions calling TryComputeLength here.
if (response.Content == null
|| await ComputeContentLengthAsync(request, response, owinResponse, cancellationToken))
{
bool bufferOutput = _bufferPolicySelector.UseBufferedOutputStream(response);
if (!bufferOutput)
{
owinResponse.DisableBuffering();
}
else if (response.Content != null)
{
response = await BufferResponseContentAsync(request, response, cancellationToken);
}
if (await PrepareHeadersAsync(request, response, owinResponse, cancellationToken))
{
await SendResponseMessageAsync(request, response, owinResponse, cancellationToken);
}
}
}
}
finally
{
request.DisposeRequestResources();
request.Dispose();
if (response != null)
{
response.Dispose();
}
}
// Call the next component if no route matched
if (callNext && Next != null)
{
await Next.Invoke(context);
}
}