Преобразование пакета применяется после того, как пакет уже добавлен
У меня есть следующие настройки
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()
метод, который, вероятно, является причиной проблемы. Однако я не могу понять, почему это происходит и как это исправить.
Первоначально я следовал этой статье, даже документы Microsoft предлагают то же самое