Преобразование пакета применяется после того, как пакет уже добавлен

У меня есть следующие настройки

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 предлагают то же самое

0 ответов

Другие вопросы по тегам