ASP.NET Framework ошибка - PullRequest
16 голосов
/ 20 мая 2011

Зайдите в настройки уровня своего компьютера iis и добавьте

<deployment retail="true" /> 

Как указано в http://msdn.microsoft.com/en-us/library/ms228298.aspx

Создайте новый веб-проект, добавьте метку и затем следующий код.

protected void Page_Load(object sender, EventArgs e)
{
    Label1.Text = HttpContext.Current.IsDebuggingEnabled.ToString();
}

//Result: true 

Чего мне не хватает?

Обновление: Я обновил значение в 64-битной и 32-битной версиях конфигурации машины. Сервер работает под управлением IIS7.5. Перезагрузка не помогла.

Обновление 2:

Проходя через V4 фреймворка с помощью Reflector, я получаю следующий код.

public bool IsDebuggingEnabled
{
    get
    {
        try
        {
            return CompilationUtil.IsDebuggingEnabled(this);
        }
        catch
        {
            return false;
        }
    }
}

internal static bool IsDebuggingEnabled(HttpContext context)
{
    return MTConfigUtil.GetCompilationConfig(context).Debug;
}

//Here is where I lose whats going on... Either way, if what Yaur said is correct then
//I believe that value is not only useless but dangerously misleading. 
internal static CompilationSection GetCompilationConfig(HttpContext context)
{
    if (!UseMTConfig)
    {
        return RuntimeConfig.GetConfig(context).Compilation;
    }
    return GetConfig<CompilationSection>(context);
}

В любом случае. Что я могу подтвердить, так это то, что функциональность не работает.

PS: @Yaur - Да, я пытался изменить значение, и мне хорошо известны альтернативы использованию этого метода, но суть в том, что этот метод должен упростить развертывание.

Ответы [ 2 ]

8 голосов
/ 20 мая 2011

Согласно: http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx, оно должно заставить:

<system.web>
  <compilation debug="false">
</system.web>

Вы перезагрузили сервер?Какой файл machine.config вы редактировали?

7 голосов
/ 24 мая 2011

Глядя на HttpContext в отражателе, все, что делает этот метод, это загружает значение, найденное в разделе компиляции. Так что поставь это, как предложил Матье, и ты будешь золотым.
Также (если вам это нужно) он выдаст исключение, если работает в режиме моно.

из 2.0 версии System.Web:

звонит

CompilationUtil.IsDebuggingEnabled(this);

который звонит

RuntimeConfig.GetConfig(context).Compilation.Debug;

Компиляция. Возвращает

(CompilationSection) this.GetSection("system.web/compilation", typeof(CompilationSection), ResultsIndex.Compilation);

версия 4.0 немного отличается ... на основании того, что я могу сказать, похоже, что "лишние вещи" - это поддержка многоцелевого доступа. Поэтому, если вы нацелены на .net 4 и настройка <compilation debug="false"> не работает, попробуйте следующий пример здесь и используйте

<system.web>
    <compilation debug="false" targetFramework="4.0">
</compilation>

вместо

...