Dav*_*nez 6 .net c# compression dynamics-crm odata
我正在尝试使用像这样的简单OData客户端库(C#)执行从CRM Dynamics检索信息的查询:
var settings = new ODataClientSettings(resource + "/api/data/v8.0/");
settings.BeforeRequest = (request) =>
{
request.Headers.Clear();
request.Headers.Add("Authorization", accesstoken.AccessTokenType + " " + accesstoken.AccessToken);
};
settings.PayloadFormat = ODataPayloadFormat.Json;
var client = new ODataClient(settings);
var annotations = new ODataFeedAnnotations();
var transactions = await client.For("mss_transaccions").FindEntriesAsync(annotations);
while (annotations.NextPageLink != null)
{
transactions = transactions.Union(await client.For("mss_transaccions").FindEntriesAsync(annotations.NextPageLink, annotations));
}
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它非常慢,因为我对mss_transaccions表的查询有7200个实体.我正在看Fiddler的输出,我可以看到它正在尝试下载大约20 MB的信息.
我试图在谷歌浏览器上运行相同的查询,我可以看到默认情况下获得的响应以gzip格式压缩,从20MB到仅仅500KB.所以我推断Simple OData Client没有进行任何压缩,这就是为什么它非常慢.
此外,来自OData Simple Client的请求要求提供另外4MB的元数据信息,而Chrome或简单的HttpClient请求则不需要进行该调用.
有什么我可以做的来改善它并启用压缩吗?
谢谢.
我终于能够启用压缩并加快整个过程。整个讨论可以在这里找到:https://github.com/object/Simple.OData.Client/issues/238
为了简单快速地完成它,您只需使用以下代码修改 ODataSettings 实例中的消息处理程序:
settings.OnApplyClientHandler = handler =>
{
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
};
Run Code Online (Sandbox Code Playgroud)
现在,httpRequests 以 gzip、deflate 的形式发送,并在响应时正确解压缩。
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |