我有以下设置
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()
这可能是问题的原因。但是我似乎无法找出为什么会发生这种情况以及如何解决它。