2010-07-09 2 views
9

Итак, мы обновили наш сайт с 3.5 SP1 -> .NET 4.Проблема с <System.Web.Extensions> группы конфигурации при обновлении до .NET 4.0

Когда мы запустили сайт, мы получили внутренний Ошибка сервера (500), с указанием следующей конфигурацией группы не может быть прочитана:

<system.web.extensions> 
     <scripting> 
      <scriptResourceHandler enableCompression="true" enableCaching="true" /> 
      <webServices> 
       <jsonSerialization maxJsonLength="999999" /> 
      </webServices> 
     </scripting> 
    </system.web.extensions> 

мы закомментированы этим разделом и на сайте побежал штраф (но теперь мы получаем проблемы с JSON - из-за требуемым выше имущество) ,

Мы читаем темы этой проблемы, и большинство из них говорит: «В вашем пуле приложений не работает 4.0». И это так, так что это не проблема.

Я также прочитал темы, в которых IIS как-то читает старый файл machine.config.

С .NET 4, как вы знаете, многие разделы web.config были перенесены в machine.config.

Так мы помещаем этот раздел назад в верхней части web.config:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> 
        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
       </sectionGroup> 
      </sectionGroup> 
     </sectionGroup> 

И сайт в настоящее время, кажется, работает нормально.

Тем не менее, я немного обеспокоен, если это правильное решение.

Любые идеи людей? Правильно ли это?

EDIT:

3 недели и нет ответов ... блин. =)

+0

Я также имею такой же вопрос, как вы ... Я не знаю, почему, но если я узнать, почему, я вернусь к вам на эту тему. –

ответ

2

Поскольку у меня не было ответов, и обширный поиск в Google не вызывал любви, я решил придерживаться своего первоначального исправления (добавив раздел system.web.extensions обратно в web.config).

0

Еще две части информации, которые могут или не могут помочь.

  1. Единственное отличие от вышеизложенного разделаГруппа и мой раздел machineGroup - это версия = 3.5.0.0 здесь и version = 4.0.0.0 в machine.config. 1.
  2. Ошибка в журнале событий: «Не удалось загрузить все фильтры ISAPI для сайта ...» Может ли быть установлена ​​система System.Web.Extensions, которая неправильно зарегистрирована с помощью .net 4?

Мне бы хотелось попробовать больше об этом, но, к сожалению, я вижу это поведение только в производственной системе, а не в системе dev.

2

Недавно я столкнулся с этой проблемой и смог ее решить после устранения некоторых неполадок. Надеюсь, что я тоже помогу исправить вашу проблему. 1. Убедитесь, что пул приложений, который вы используете для сайта, использует .NET-конвейер 2. Откройте свой .csproj (или .vbproj, если ваш проект VB) в «Блокноте» и пройдите файл и проверьте, есть ли какие-либо жестко закодированные ссылки на файлы v2.0 Framework. В моем случае у нас была задача «После сборки», которая использовала путь компилятора v2.0, который заставил приложение по-прежнему использовать среду выполнения 2.0. Это было как внизу.

<Target Name=”AfterBuild” Condition=”’$(MvcBuildViews)’==’true’”> 
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ != ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(ProjectDir)\..\$(ProjectName)” /> 
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ == ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(OutDir)\_PublishedWebsites\$(ProjectName)” /> 

Убедитесь, что изменить их v4.0 или еще лучше сделать их confiurable. Надеюсь, что помогает.

-Vamsi