[英]Compress the response of service stack
I tried to compress the response of service stack using global filters but it not work throws 500 err code.我尝试使用全局过滤器压缩服务堆栈的响应,但它不起作用抛出 500 错误代码。 here are my code
这是我的代码
this.GlobalResponseFilters.Add((req, response, requestDto) =>
{
response.AddHeader("Content-Encoding", "gzip");
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, requestDto);
var data = new GZipStream(stream, CompressionMode.Compress);
response.WriteToResponse(response, "application/json");
}
Here i tried [CompressResponse] attribute also在这里我也尝试了 [CompressResponse] 属性
MvcController Mvc控制器
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = httpClient.GetAsync(url).Result;
HttpResponseMessage 响应 = httpClient.GetAsync(url).Result;
ServiceStack.ServiceInterface服务堆栈.服务接口
public interface ICommonDAL
{
Task<string> Getdefaultvalue(Getvalue request);
}
[CompressResponse] [压缩响应]
public class CommonDAL: DBConnection, ICommonDAL {公共 class CommonDAL:DBConnection,ICommonDAL {
public async Task<string> Getdefaultvalue(Getvalue request)
{
return await WithConnection(async c =>
{
var p = new DynamicParameters();
p.Add("@pID", request.ID);
p.Add("@pMode", request.Mode);
var res= await c.QuerySingleAsync<string>("[dbo].[spdemo]", p, commandType: CommandType.StoredProcedure);
return res
});
}
} }
Please refer to ServiceStack Compression Docs , eg you can compress Service Responses with the [CompressResponse]
attribute, eg:请参考ServiceStack Compression Docs ,例如您可以使用
[CompressResponse]
属性压缩服务响应,例如:
[CompressResponse]
public class CompressedServices : Service
{
public object Any(CompressDto request) => new CompressExamplesResponse();
public object Any(CompressString request) => "foo";
public object Any(CompressBytes request) => "foo".ToUtf8Bytes();
public object Any(CompressStream request) => new MemoryStream("foo".ToUtf8Bytes());
public object Any(CompressFile request) => new HttpResult(VirtualFileSources.GetFile("/foo"));
public object Any(CompressAnyHttpResult request)
{
return new HttpResult(new CompressExamplesResponse()); // DTO
return new HttpResult("foo", "text/plain"); // string
return new HttpResult("foo".ToUtf8Bytes(), "text/plain"); // bytes
//etc
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.