c# - 是 ASP.NET Core、Microsoft.FeatureManagementTagHelper 设计不好?
问题描述
我做了这样的步骤:
Install-Package Microsoft.FeatureManagement.AspNetCore
- 放入 .cshtml 页面:
<feature name="IsDoomsday">you may type format c:</feature>
- 在 Startup.cs 中添加
services.AddFeatureManagement();
- 在 appsettings.json
{
"FeatureManagement": { "IsDoomsday": false }
}
并希望仅在启用IsDoomsday功能时才显示“您可以键入格式 c:”字符串。显然我没有正确配置一些东西,我最新的 Firefox 78.0.2 出乎意料地显示“你可以输入格式 c:”并且有:
在生成的 html 的内脏中。<feature name="IsDoomsday">you may type format c:</feature>
怎么可能,这种关键功能的输出可能取决于错误配置并泄漏给用户,这是<feature>的设计失败吗?
(弱)修复:不要错过视图层次结构中的以下内容:
@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
(PS:我最终在.cshtml页面中切换到@if)
@if (await FeatureManager.IsEnabledAsync("IsDoomsday"))
{
<text>you may type format c:</text>
}
解决方案
与其声称某些功能/库设计不佳,不如先阅读文档,了解它的工作原理,如果需要,请查看教程以了解如何使用它。您可以在此处找到教程:快速入门:向 ASP.NET Core 应用添加功能标志。
以下工作非常好,我添加了解释:
安装 NuGet 包
Microsoft.FeatureManagement.AspNetCore
- 包含所需的功能将功能添加到您的 appsettings.json 或 appsettings.{environment}.json 文件。包从构建的配置中读取。来自新项目的更新文件:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "FeatureManagement": { "IsDoomsday": true } }
注册包所需的服务。例如,您可以使用预先配置的 IConfiguration:
services.AddFeatureManagement();
通过注册来启用 FeatureTagHelper,例如,在
_ViewImports.cshtml
:@addTagHelper *, Microsoft.FeatureManagement.AspNetCore
在任何地方使用标签助手:
<feature name="IsDoomsday">Hello doomsday</feature>
您可以随意使用"IsDoomsday": true | "IsDoomsday": false
并查看它是否呈现或不呈现该功能,如预期的那样。
推荐阅读
- c++ - 是什么导致我的代码中的堆损坏和无关值?
- java - 快速转义闭包以及如何在 Java 中执行它
- kubernetes-helm - 允许pod通过ingress访问service的域名
- sql-server - 在代码点火器 MSSQL 上使用连接删除返回错误
- javascript - 未使用 jquery 和 javascript 检查 CheckBox
- java - Weblogic 失败并出现错误:org.springframework.beans.factory.BeanCreationException:创建带有名称的 bean 时出错
- kubernetes - 没有可用于 Kubernetes 仪表板服务的端点
- sql - SQL 查询分组依据和排序依据
- html - 将 para 拆分为 6 列,并使用 css 将图像放在 3 列中
- java - 使用java在seleniumwebdriver中上传文件时如何处理(windows)打开按钮