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

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

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

if(GlimpseConfig.IsGlimpseActive)
{

} 

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);
        }
    }
}
Другие вопросы по тегам