1

我有以下设置

public class TrackingTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        const string apiTokenPlaceHolder = "{{ApiToken}}";
        var token = ConfigurationManager.AppSettings["Token"];

        response.Content = response.Content.Replace(apiTokenPlaceHolder, token);
    }
}

并将转换添加到我的包中

var trackingBundle = new ScriptBundle("~/bundles/tracking/global").Include(
            "~/Scripts/mdb.mixpanel.js",
            "~/Scripts/mdb.tracking.global-handlers.js"
            );

        trackingBundle.Transforms.Add(new TrackingTransform());
        bundles.Add(trackingBundle);

然后我像这样在视图中引用包

@Scripts.Render("~/bundles/tracking/global")

调试时,我可以看到{{ApiToken}}被替换为正确的值,response.Content但是当我在浏览器中查看脚本时,我仍然看到原始占位符。

我注意到bundles.Add(trackingBundle)在方法之前执行了Process()这可能是问题的原因。但是我似乎无法找出为什么会发生这种情况以及如何解决它。

我最初是在关注这篇文章,即使微软的文档也提出了同样的建议

4

0 回答 0