Розгортання IIS7 - дублікат розділу "system.web.extensions / scripting / scriptResourceHandler"


209

При спробі розгортання веб-сайту .net 3.5 в пулі програм за замовчуванням в IIS7 з розділом фреймворку встановлено 4,0, я отримую таку помилку.

Визначений дублікат 'system.web.extensions / scripting / scriptResourceHandler'.

Коментувати рядки-кривдники теж не допомогло. Будь-які вказівки на те, що мені потрібно зробити або подивитися?

Відповіді:


338

Якщо ваш план полягає у розгортанні до IIS, на якому працює пул застосунків, що працює в .net 4.0, вам потрібно буде очистити web.config, який включає всі визначення розділів, які вказують на .net 3.5. Причина цього не вдається через те, що ці визначення розділів уже включені в корінь web.config в .NET 4.0 (див.% Windir% \ microsoft.net \ Framework \ v4.0.30319 \ config \ machine.config), що включає всю систему. web.extensions вже оголошено.

Ще одне швидке виправлення полягає в тому, щоб пул додатків був встановлений на 2,0 так, як, здається, у вашій розроблювальній машині.


Дякую. Я насправді розібрався в цьому вирішенні після
роздумів

3
Дякую за пояснення цього. Я постійно бачив рішення про видалення розділу з конфігураційного файлу, і мені цікаво, "як вирізати частини вашого файлу config"?
Адам Брусс

13
МОЙ ПІДПРИЄМНИЙ БАСЕЙН ВСТАНОВАЛИ НА 4,0 ІНСТРУКЦІЮ 2,0!
RolandoCC

1
Це було просто, переключіть цей старший сайт на пул додатків 2.0 і віола працює! Дякую!
mgrenier

1
Щойно видалення розділу .net 3.5 з web.config працювало на мене
Ананд

49

Для мене було рішення змінити версію .NET Framework у пулах додатків з v4.0 на v2.0 для пулу додатків за замовчуванням:

введіть тут опис зображення


13
aaaand, якщо ви фактично використовуєте .NET 4.0 у додатку?
Майкл Паулуконіс

3
@MichaelPaulukonis У мене була ця проблема, виявилося, що в кореневому веб-сайті є web.config, від якого мій веб-сайт успадковував.
guanome

@MichaelPaulukonis, pfft подібне станеться!
DaveDev

У мене була ця проблема, коли мій додаток було оновлено з 3,5 до 4,0, пул додатків було оновлено правильно, але web.config застарів. Web.config намагався додати всі ті групи розділів, які з 4.0 є рідними і їх не потрібно явно додавати.
дризін

48

Якщо, як я, вам потрібно націлити на v4, але ви можете створювати лише з .net 3.5, дотримуйтесь інструкцій тут . Просто замініть у своєму web.config весь вміст на <configSections>:

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


3
Ваше було єдиним рішенням, яке вирішило мою помилку! Дуже дякую!
Devdatta Tengshe

1
Це і вирішило мою проблему. Сервер було оновлено IIS6 до IIS7.5. На IIS6 він працював під v4.0, але IIS7.5 потребував цієї зміни в web.config.
johna

це було дивним.
mzonerz

Значення в PublicKeyToken залежить від регістру (і має виглядати так, як у відповіді). У мене була велика літера, і це не спрацювало.
Бьорн

3

Повторне використання басейну для дефектування. тут] [2]

Ви можете вирішити проблему з адміністративною адміністрацією центрального SharePoint 2010

----- через Google Translate -----

Проблема полягає в тому, що пул знаходиться за замовчуванням. Net 4.0 Рішення: введіть сервер IIS Manager, щоб встановити значення в правій частині пулів додатків.! [Введіть тут опис зображення] [1] та змініть версію рамки! [Введіть опис зображення тут] [2]

Це повинно вирішити проблему встановлення центральної адміністрації SharePoint 2010


22
Ласкаво просимо до StackOverflow! Якщо ви не маєте достатнього рівня володіння англійською мовою, будь ласка, запустіть свої відповіді через Google Translate . Спільнота покращить будь-які дивні фрази, редагуючи. Спасибі за вашу відповідь. ||||| через Google Translate ||||| Щодо StackOverflow! Ви не ввімкнули жодного домінування щодо англійської мови, будь ласка, виконайте наступні результати Google Translate . La comunidad mejorará frases extrañas en la edición. Gracias por su respuesta.
Андрій Козак


3

Некромантування.
Якщо у вас немає жодних конфігураційних розділів system.web.extensions або записів обробника / модуля у вашій web.config, ця проблема викликана тим, що ви / хтось інший скопіював VisualStudio-Project (2013/2015/2017), ховаючи прихований -файли невідомі .

Через це він буде не тільки копіювати .git, але й .VSякий містить файл IIS-Express applicationhost.config , який вказує на файли web.config на шляхи, які не існують (або ще гірше, шляхи, які існують, але не мають однакового вмісту) ...

Рішення:
Видаліть файл applicationhost.config у папці .VS.
Або просто видаліть папку .VS.
Visual Studio відновить його.


Відмінне пояснення
Вільям Белло

2

Моєю програмою було додаток ASP.Net3.5 (використовуючи версію 2 фреймворку). Коли створено програми ASP.Net3.5, Visual Studio автоматично додає scriptResourceHandler до web.config. Пізніші версії .Net помістили це в machine.config. Якщо ви запустите додаток ASP.Net 3.5 за допомогою пулу додатків версії 4 (залежно від порядку встановлення, це пул додатків за замовчуванням), ви отримаєте цю помилку.

Коли я перейшов до використання пулу додатків версії 2.0. Помилка пішла. Тоді мені довелося зіткнутися з помилкою під час обслуговування WCF .svc:

Помилка HTTP 404.17 - не знайдено Запитаний контент, як видається, є сценарієм і не буде поданий обробником статичного файлу

Після деякого розслідування, здається, мені потрібно було зареєструвати обробник WCF. виконуючи наступні дії:

  1. відкрити командний рядок Visual Studio (як адміністратор)
  2. перейдіть до пункту "C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation"
  3. Виконати servicemodelreg -i


1

У моєму випадку це сталося після того, як я перетворив все рішення (використовуючи розширення під назвою Target Framework Migrator) на 4.6.2, але в результаті скасував зміни та повернувся до рівня 3,5 (рішення виконане TFS). Щоб вирішити це, я перетворив лише проблемний проект (для запуску IIS Express) до 4.6.2, а потім назад до 3.5.


Дякую. здається, що повернення назад і скасування змін не будуть правильно приводити додаток до стану .NET 3.5.
Іман

0

Ще один спосіб уникнути цієї проблеми, яка може допомогти іншим, - це побудувати ваш веб-сервіс .net до версії 4.0 або вище, якщо це можливо.


0

У моєму випадку у мене було 2 різних додатки, які використовували один і той же пул програм. Перший використовував framwork .net4.5, а новий використовував 2.0. Коли я змінив другий додаток на власний пул додатків, він починає працювати нормально, не змінюючи web.config.


0

Моя резолюція була якось дурною.

  • Я встановив копію .net 3.5

  • Створено інший пул додатків та вибрано .net 3.5 (у спадному списку написано 2.0.5077)

  • Додано мій веб-сайт до цього пулу додатків

  • Переробили старий і новий басейни, і сайт почав працювати.

До мене прийшло не встановлене 3,5, хоча функція включення Windows сказала, що я це зробив, і створив інший пул додатків для використання. Я сподіваюся, що це допомагає іншим.


0

У моєму випадку я хотів вручну додати правило urlrewrite і не міг бачити очевидну помилку (я пропустив <rules>тег):

невірний код:

    <rewrite>
      <rule name="some rule" stopProcessing="true">
        <match url="some-pattenr/(.*)" />        
        <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
      </rule>
    </rewrite>    

  </system.webServer>
</configuration>

власний код (з тегом правил):

    <rewrite>
      <rules>
        <rule name="some rule" stopProcessing="true">
          <match url="some-pattenr/(.*)" />        
          <action type="Redirect" url="/some-ne-pattenr/{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>

0

Я вирішив це, виконавши наступні кроки:

  1. Я створив нову групу додатків у IIS.
  2. Відкрийте розширені налаштування для веб-сайту чи веб-програми, яка має цю проблему.
  3. І встановити групу нового додатка.

Тут ви знайдете зображення цих кроків:

Створіть групу нової програми

Після створення групи програми

Встановіть групу програм на своєму веб-сайті чи веб-програмі


0

Це повідомлення про помилку з'являється в різних ситуаціях.

У моєму випадку поверх файлу Web.Config додатка у мене був додатковий файл Web.Config у кореневій папці (C: \ Inetpub \ www.root). Ймовірно, залишився там після деяких тестувань, я забув про це і не міг зрозуміти, в чому проблема.

Видалення це вирішило проблему для мене.


0

Це, можливо, неправильна відповідь для вас. Але це було першим зверненням до Google, коли я спробував вирішити свою проблему. З урахуванням сказаного ...

Таке ж повідомлення про помилку траплялося і для мене, але коли я намагався запустити IIS Express через Visual Studio.

Моя проблема полягала в тому, що я помилково зобов’язав свою applicationhost.config до TFS. Пізніше, коли я спробував запустити проект на своєму ноутбуці після отримання останніх зобов'язань. ось тоді сталася помилка.

Я виявив, що шлях віртуального каталогу був невірним.

<virtualDirectory path="/" physicalPath="C:\Users\giddan\Documents\Visual Studio 2015\Projects\ProjectName\DeV.ProjectName\DeV.ProjectName.Web" />

Сподіваюся, що це допоможе комусь!

Це мій перший пост, тож будь ласкавим :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.