По коду я могу определить, активен ли glimpse для текущего запроса?

Я хочу добавить несколько настраиваемых плагинов для ознакомления. Однако профилирование, которое я хочу сделать, стоит дорого, поэтому я хочу делать это только в том случае, если для текущего запроса включен идентификатор glimpse. Могу ли я получить доступ к свойству в коде, чтобы узнать, включен ли в данный момент проблеск.

Что-то вроде:

if(GlimpseConfig.IsGlimpseActive)
{

} 

person Richard Forrest    schedule 18.10.2013    source источник


Ответы (1)


Прежде всего, если вы создаете плагин для Glimpse, например настраиваемую вкладку, то ваша вкладка будет запрашивать данные только в том случае, если для данного запроса активен Glimpse.

Итак, чтобы было ясно, если вы хотите сделать проверку, как вы упомянули выше, внутри своей вкладки, тогда в этом нет необходимости, поскольку Glimpse не будет звонить вам в первую очередь. Но если вы говорите о включении / отключении некоторого кода профилирования, к которому будет обращаться ваша настраиваемая вкладка и который может быть дорогостоящим, тогда, я думаю, проверка действительно может быть полезной. К сожалению, в настоящее время это невозможно сделать без какого-либо злоупотребления внутренними компонентами Glimpse.

Ваш вопрос, похоже, имеет то же требование, что и этот вопрос, поэтому Я не собираюсь вставлять здесь тот же ответ, но я вставлю образец кода для полноты этого ответа.

Но вкратце вы могли бы сделать следующее, если помните, что нет никаких гарантий относительно того, будет ли это работать в следующих выпусках, но проверьте другой вопрос для получения дополнительных сведений.

public static class CurrentGlimpseStatus
{
    private const string GlimpseCurrentRuntimePolicyKey = "__GlimpseRequestRuntimePermissions";

    public static bool IsEnabled
    {
        get
        {
            RuntimePolicy currentRuntimePolicy = RuntimePolicy.Off;
            if (System.Web.HttpContext.Current.Items.Contains(GlimpseCurrentRuntimePolicyKey))
            {
                currentRuntimePolicy = (RuntimePolicy)System.Web.HttpContext.Current.Items[GlimpseCurrentRuntimePolicyKey];
            }

            return !currentRuntimePolicy.HasFlag(RuntimePolicy.Off);
        }
    }
}
person cgijbels    schedule 18.10.2013