无法读取配置节'system.servicemodel',因为它缺少节声明

时间:2011-06-16 07:32:06

标签: asp.net wcf iis-7 windows-server-2008-r2

我有点问题。 我的旧网络服务器(Windows 2003)已被2008 R2取代。我已经获得了一个管理员帐户,可以做我想做的任何事情,但我不是这方面的专家。 我将角色配置为具有应用程序开发和Web服务器(iis7)。

但是,我的网站运行.NET4,角色只安装了3.5。 所以我试图在服务器上手动安装.NET4。 我的问题是,由于我的web.config中的System.ServiceModel部分,我的网站将无法使用它。 我确保它在.NET4应用程序池中运行。

我认为这是一个WCF问题,但我无法掌握如何解决它。我尝试过在谷歌上发现的一切。 aspnet_regis,ServiceModelReg.exe等。 我甚至尝试过重新安装webserver角色,但每次尝试进入网站设置时,我仍然会收到此错误。

我希望这里有一些专家,他们知道如何解决这个问题。

8 个答案:

答案 0 :(得分:32)

我有相同的错误消息,这是因为我错过了该服务器上的.NET 3.5.1框架。启用修复我的问题: 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

答案 1 :(得分:26)

转到IIS中的应用程序池,然后选择“设置应用程序池默认值”[右上角提供],并检查.net框架的版本。

注意:默认情况下它被选为.net 4.0版本

答案 2 :(得分:6)

显然IIS7需要一个System.WebServer部分,即使它是空的。 将以下内容添加到我的web.config文件中解决了我的问题。

  <system.webServer>
  </system.webServer>

答案 3 :(得分:5)

我有不同的理由来收到此错误。

这是在将MVC项目从.Net 4.0迁移到4.5时发生的,其中Microsoft.IdentityModel库被System.identityModel替换。在我的情况下,我已完成所有必要的Web.Config迁移步骤listed here,但忘记更改configSections部分中的部分名称:

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

作为written here,部分定义应为:

<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

答案 4 :(得分:3)

我的问题是没有安装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上运行。

答案 5 :(得分:1)

因为我的项目需要在.net 2.0中运行 我必须关注此链接,它对我有用解决方案3 :运行file.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

答案 6 :(得分:0)

我遇到了同样的问题......我用以下内容修复了它:aspnet_regiis.exe -i

答案 7 :(得分:0)

对于我,谁不想安装.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>