You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Function中使用AddWebEncoders()并依赖注入编码器?

解决方案

你可以直接通过构造函数注入HtmlEncoder类型来使用DI容器中的实例,具体步骤如下:

  1. 修改DataService的构造函数,添加HtmlEncoder参数:
public class DataService : IDataService
{
    private readonly HtmlEncoder _htmlEncoder;

    // 通过构造函数注入HtmlEncoder
    public DataService(HtmlEncoder htmlEncoder)
    {
        _htmlEncoder = htmlEncoder;
    }

    public async Task<string> GetHtmlData()
    {
        // 使用注入的编码器实例进行编码
        string encodedData = _htmlEncoder.Encode("<img src=x onerror=confirm(\"HACKED\")>");
        return await Task.FromResult(encodedData);
    }
}
  1. 保持你现有的Host配置不变(已调用services.AddWebEncoders()),DI容器会自动将注册的HtmlEncoder实例注入到DataService中。

补充说明

  • AddWebEncoders()方法会将HtmlEncoder、JavaScriptEncoder和UrlEncoder都注册到服务容器中,可根据需求注入对应的类型。
  • 使用DI注入的编码器优势在于:后续若需自定义编码器配置(比如允许特定字符、修改编码规则),只需在AddWebEncoders()中添加配置即可,无需修改业务代码,示例如下:
services.AddWebEncoders(options =>
{
    options.HtmlEncoder = HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs });
});

内容的提问来源于stack exchange,提问作者Fylix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:47:44