Ошибка структуры ASP.NET
Перейдите в настройки уровня вашего компьютера 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 - Да, я попытался изменить значение, и мне хорошо знакомы с альтернативами использования этого метода, но дело в том, что этот метод должен упростить развертывание.
Ответы
Ответ 1
В соответствии с: http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx, он должен заставить:
<system.web>
<compilation debug="false">
</system.web>
Перезагрузили ли вы свой сервер?
Какой файл machine.config вы редактировали?
Ответ 2
Глядя на HttpContext в рефлекторе, весь этот метод заключается в загрузке значения, найденного в разделе компиляции. Поэтому поставьте так, как предложила матье, и вы должны быть золотыми.
Также (если вам интересно), он будет генерировать исключение, если работает под моно.
из версии 2.0 System.Web:
он вызывает
CompilationUtil.IsDebuggingEnabled(this);
который вызывает
RuntimeConfig.GetConfig(context).Compilation.Debug;
Compilation.Get возвращает
(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>
вместо