本文整理汇总了C#中IResponse.WriteBytesToResponse方法的典型用法代码示例。如果您正苦于以下问题:C# IResponse.WriteBytesToResponse方法的具体用法?C# IResponse.WriteBytesToResponse怎么用?C# IResponse.WriteBytesToResponse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IResponse
的用法示例。
在下文中一共展示了IResponse.WriteBytesToResponse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CacheAndWriteResponse
private bool CacheAndWriteResponse(CacheInfo cacheInfo, IRequest req, IResponse res, object response)
{
var httpResult = response as IHttpResult;
var dto = httpResult != null ? httpResult.Response : response;
if (dto == null || dto is IPartialWriter || dto is IStreamWriter)
return false;
var expiresIn = cacheInfo.ExpiresIn.GetValueOrDefault(DefaultExpiresIn);
var cache = cacheInfo.LocalCache ? HostContext.LocalCache : HostContext.Cache;
var responseBytes = dto as byte[];
if (responseBytes == null)
{
var rawStr = dto as string;
if (rawStr != null)
responseBytes = rawStr.ToUtf8Bytes();
else
{
var stream = dto as Stream;
if (stream != null)
responseBytes = stream.ReadFully();
}
}
var encoding = req.GetCompressionType();
var cacheKeyEncoded = encoding != null ? cacheInfo.CacheKey + "." + encoding : null;
if (responseBytes != null || req.ResponseContentType.IsBinary())
{
if (responseBytes == null)
responseBytes = HostContext.ContentTypes.SerializeToBytes(req, dto);
cache.Set(cacheInfo.CacheKey, responseBytes, expiresIn);
if (encoding != null)
{
res.AddHeader(HttpHeaders.ContentEncoding, encoding);
responseBytes = responseBytes.CompressBytes(encoding);
cache.Set(cacheKeyEncoded, responseBytes, expiresIn);
}
}
else
{
var serializedDto = req.SerializeToString(dto);
if (req.ResponseContentType.MatchesContentType(MimeTypes.Json))
{
var jsonp = req.GetJsonpCallback();
if (jsonp != null)
serializedDto = jsonp + "(" + serializedDto + ")";
}
responseBytes = serializedDto.ToUtf8Bytes();
cache.Set(cacheInfo.CacheKey, responseBytes, expiresIn);
if (encoding != null)
{
responseBytes = responseBytes.CompressBytes(encoding);
cache.Set(cacheKeyEncoded, responseBytes, expiresIn);
res.AddHeader(HttpHeaders.ContentEncoding, encoding);
}
}
var doHttpCaching = cacheInfo.MaxAge != null || cacheInfo.CacheControl != CacheControl.None;
if (doHttpCaching)
{
var cacheControl = BuildCacheControlHeader(cacheInfo);
if (cacheControl != null)
{
var lastModified = cacheInfo.LastModified.GetValueOrDefault(DateTime.UtcNow);
cache.Set("date:" + cacheInfo.CacheKey, lastModified, expiresIn);
res.AddHeaderLastModified(lastModified);
res.AddHeader(HttpHeaders.CacheControl, cacheControl);
if (encoding != null)
res.AddHeader(HttpHeaders.Vary, "Accept-Encoding");
if (cacheInfo.VaryByUser)
res.AddHeader(HttpHeaders.Vary, "Cookie");
}
}
if (httpResult != null)
{
foreach (var header in httpResult.Headers)
{
res.AddHeader(header.Key, header.Value);
}
}
res.WriteBytesToResponse(responseBytes, req.ResponseContentType);
return true;
}