我有以下设置
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()
方法之前执行,这可能是导致问题的原因。但是,我似乎无法找出为什么会发生这种情况以及如何解决它。
我最初关注this article即使是微软的docs建议同样的事情