首页 > 解决方案 > 为什么 SignalR 需要添加“application/octet-stream”类型的响应压缩?

问题描述

这篇Microsoft Docs 文章介绍了如何在 Blazor 应用中配置 SignalR。有一个步骤可以为application/octet-streamMIME 类型添加响应压缩中间件:

services.AddSignalR();
services.AddControllersWithViews();
services.AddRazorPages();
services.AddResponseCompression(opts =>
{
    opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
        new[] { "application/octet-stream" });
});

但是,可以注意到在展示如何为 ASP.NET Core 应用程序(使用 JavaScript 库)配置 SignalR 的文章中跳过了此步骤。

我正在尝试为 ASP.NET Core MVC 应用程序配置 SignalR,但它位于预渲染的 Razor 组件中,因此我按照 Blazor 文章中的说明进行配置。我的应用程序的其他部分涉及上传和下载图像和电子表格,所以我也想知道添加上述响应压缩是否会干扰这些操作。

有人可以解释是否以及为什么需要此步骤?它有什么显着的区别吗?我想这是为了优化 SignalR 连接上二进制消息的传输。

标签: c#asp.netasp.net-coresignalrblazor

解决方案


有人可以解释是否以及为什么需要此步骤?它有什么显着的区别吗?我想这是为了优化 SignalR 连接上二进制消息的传输。

在 Blazor 中使用 asp.net core SignalR 时不需要响应压缩中间件。在本教程中,如果您删除 Startup.cs 文件中的services.AddResponseCompression()app.UseResponseCompression();,SignalR 仍然可以正常工作。

更多详细信息,您可以查看响应压缩中间件,它用于动态压缩响应体并降低带宽利用率。


推荐阅读