Вопрос

Итак, мы обновили наш сайт от 3.5 SP1 -> .NET 4.

Когда мы запустили сайт, мы получили внутреннюю ошибку сервера (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>
.

и сайт теперь кажется, работает хорошо.

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

Любые идеи люди? Это правильное исправление?

Редактировать:

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

Это было полезно?

Решение

Как у меня не было ответов, и обширное гугулирование никому не было, я решил придерживаться своего оригинального исправления (добавляя раздел System.Web.extension в Web.config).

Другие советы

Я в последнее время столкнулся с этим вопросом и смог решить его после некоторого устранения неполадок.Надеюсь, что я тоже поможет исправить вашу проблему. 1. Убедитесь, что пул приложения, который вы используете для сайта, используют трубопровод .NET 4 2. Откройте свой .csproj (или .vbproj, если ваш проект VB) в блокноте и прохождете файл и проверьте, есть ли какие-либо жесткие ссылки на Framework forments.В моем случае у нас была задача «После сборки», которая использовала путь компилятора 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 или даже лучше сделать их полномочиями. Надеюсь, что поможет.

-vamsi

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

  1. Единственное отличие от вышеуказанной разрезной группы и My Machine GruoudGroup - это версия= 3.5.0.0 здесь и Version= 4.0.0.0 в Machine.config. 1.
  2. Ошибка в журнале событий - это не удалось загрузить все фильтры ISAPI для сайта ... »Может ли установить System.Web.extensions, которые не зарегистрированы должным образом с .NET 4?
  3. Я хотел бы тестировать больше на это, но, к сожалению, я вижу только это поведение в производственной системе, а не системе Dev.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top