I tried to compress the response of service stack using global filters but it not work throws 500 err code. 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
MvcController
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = httpClient.GetAsync(url).Result;
ServiceStack.ServiceInterface
public interface ICommonDAL
{
Task<string> Getdefaultvalue(Getvalue request);
}
[CompressResponse]
public 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:
[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
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.