Раздел конфигурации 'system.servicemodel' не может быть прочитан, поскольку в нем отсутствует объявление раздела - PullRequest
30 голосов
/ 16 июня 2011

У меня какая-то проблема.Мой старый веб-сервер (Windows 2003) был заменен на 2008 R2.Мне дали учетную запись администратора, и я могу делать все, что захочу, но я не эксперт в этой области.Я настроил роли для разработки приложений и веб-сервера (iis7).

НО, на моем сайте работает .NET4, а роль установлена ​​только 3.5.Поэтому я попытался установить .NET4 вручную на сервере.Моя проблема в том, что мой веб-сайт не будет работать на нем, из-за раздела System.ServiceModel в моем web.config.Я убедился, что он работает в пуле приложений .NET4.

Я предполагаю, что это проблема WCF, но не могу понять, как ее решить.Я перепробовал все, что нашел в Google.aspnet_regis, ServiceModelReg.exe и так далее.Я даже пытался переустановить роль веб-сервера, но я все еще получаю эту ошибку, каждый раз, когда пытаюсь войти в настройки сайтов.

Я надеюсь, что здесь есть несколько экспертов, которые знают, как это исправить.

Ответы [ 8 ]

32 голосов
/ 06 декабря 2011

У меня было то же сообщение об ошибке, и это было потому, что я отсутствовал .NET 3.5.1 Framework на этом сервере.Включение, которое решило мою проблему: http://blogs.msdn.com/b/sqlblog/archive/2010/01/08/how-to-install-net-framework-3-5-sp1-on-windows-server-2008-r2-environments.aspx

26 голосов
/ 18 июня 2012

Перейдите в пулы приложений в IIS и выберите «Установить пул приложений по умолчанию» [доступно в правом верхнем углу] и проверьте версию .net framework.

Примечание: по умолчанию он будет выбран в качестве версии .net 4.0

6 голосов
/ 17 июня 2011

Очевидно, IIS7 нужен раздел System.WebServer, даже если он пустой.Добавление следующего в мой файл web.config устранило мою проблему.

  <system.webServer>
  </system.webServer>
5 голосов
/ 03 июля 2014

У меня была другая причина для получения этой ошибки.

Это произошло во время миграции проекта MVC с .Net 4.0 на 4.5, где библиотека Microsoft.IdentityModel заменена на System.identityModel. В моем случае я выполнил все необходимые шаги миграции Web.Config , перечисленные здесь , но забыл изменить имя раздела в разделе configSections:

<configSections>
 <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>

Как написано здесь , определение раздела должно быть:

<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
3 голосов
/ 29 марта 2015

Проблема для меня заключалась в том, что службы WCF не были установлены.Установка, которая исправила проблему для меня: http://blogs.msdn.com/b/knom/archive/2009/10/14/iis7-wcf-services-svc-do-not-work.aspx

Обратите внимание, что изменение версии пула приложений .NET с 2.0 на 4.0 для меня не вариант, поскольку сайт должен работать на 2.0.

1 голос
/ 14 октября 2015

Потому что мой проект нужно запустить в .net 2.0 Я должен перейти по этой ссылке, и она работает для меня с решение 3 : запустить файл.js

http://blogs.msdn.com/b/wenlong/archive/2010/11/23/why-does-machine-config-contain-invalid-xml-content-after-installing-net-3-5-patches.aspx

0 голосов
/ 19 апреля 2018

Для меня, который не хотел устанавливать .NET Framework 3.5, решение заключалось в том, чтобы записать секцию system.serviceModel из machine.config в мой web.config файл:

<configuration>
  <configSections>
    <sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="behaviors" type="System.ServiceModel.Configuration.BehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="bindings" type="System.ServiceModel.Configuration.BindingsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="client" type="System.ServiceModel.Configuration.ClientSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="comContracts" type="System.ServiceModel.Configuration.ComContractsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="commonBehaviors" type="System.ServiceModel.Configuration.CommonBehaviorsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
        <section name="diagnostics" type="System.ServiceModel.Configuration.DiagnosticSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="machineSettings" type="System.ServiceModel.Configuration.MachineSettingsSection, SMDiagnostics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
        <section name="protocolMapping" type="System.ServiceModel.Configuration.ProtocolMappingSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowDefinition="MachineToApplication"/>
        <section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <section name="routing" type="System.ServiceModel.Routing.Configuration.RoutingSection, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <section name="tracking" type="System.ServiceModel.Activities.Tracking.Configuration.TrackingSection, System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </sectionGroup>
  </configSections>
  <system.serviceModel>
    <!-- ... -->
  </system.serviceModel>
</configuration>
0 голосов
/ 15 июля 2016

У меня была такая же проблема ... Я просто исправил это с помощью: aspnet_regiis.exe -i

...