c# - WebMarkupMin + Razor + React:无法将标记缩小应用于以“gzip”格式编码的文本内容
问题描述
我在“带有 React.js 的 ASP.NET Core”项目中混合使用 React.js SPA 生成页面和 Razor 视图。
在实现 WebMarkupMin 时,运行时出现以下异常:
处理请求时发生未处理的异常。
InvalidOperationException:无法将标记缩小应用于以“gzip”格式编码的文本内容。
为什么会发生这种情况,我该如何预防?
解决方案
发生异常是因为 WebMarkupMin 正在尝试缩小已经压缩的数据。
该页面已被 Node.Js('npm start')压缩。
要解决这个问题,您可以从 WebMarkupMin 中排除您的 React.js SPA URL,如下所示:
var reactUrls = new List<IUrlMatcher>(){ new ExactUrlMatcher("/")};
services.AddWebMarkupMin()
.AddHtmlMinification(options => options.ExcludedPages = reactUrls)
.AddHttpCompression(options => options.ExcludedPages = reactUrls);
为了将您的 React.js 路由指向 ASP.NET 托管的 Razor 视图(由 WebMarkupMin 处理),您可以执行以下操作:
render() {
const reload = () => window.location.reload();
return (
<Switch>
<Route exact path='/razor' onEnter={reload} />
<Route exact path='/mvc' onEnter={reload} />
<Route exact path='/' component={HomePage} />
<Route component={NotFoundPage} />
<Route path='' onEnter={reload} />
</Switch>
);
推荐阅读
- powershell - [string]::Format 和 -f 以及 Array vs split 运算符之间的区别
- java - 将子类属性与父类方法一起使用
- python - 如何使用 Python Selenium 加载 Firefox 配置文件?
- python - osx 上的 conda gfortran 链接失败问题
- c# - 如何通过浮点数搜索数据库
- java - 找到我通过他的 Getter 方法调用的字符串的第一个元音?
- bash - 查找文件名是否包含bash脚本中的某个字符串
- c - 在 C 中计算 IP 校验和
- c# - c#中的简单托盘应用程序
- python - 提取 SymPy 表达式的常量部分