The configuration section 'system.serviceModel' cannot be read because it is missing a section declaration

21,097

Starting with .Net Framework 4 service behaviors do not require a name (MSDN). Before .Net 4 it was mandatory. Because your service behavior does not have a name:

<serviceBehaviors>
    <behavior>
        <!-- name attribute missing in behavior -->
    </behavior>
</serviceBehaviors>

and IIS is throwing an error I suspect your app pool is not running .Net 4 or newer.

Share:
21,097
JelleP
Author by

JelleP

Updated on October 15, 2020

Comments

  • JelleP
    JelleP over 3 years

    We already created an webservice in Visual Studio 2013 with .Net 4.5. This webservice runs well local in the same computer.

    Right now we want to export this webservice to an Windows Server 2008 with IIS. We already made an webservice running in port 8080.

    But when we copy the exported files to the root directory of this webserver the folowwing error occured:

    Error Summary 
    HTTP Error 500.19 - Internal Server Error
    
    The requested page cannot be accessed because the related configuration data for the page is invalid.
    
    
    Detailed Error Information 
    
    
    Module
    IIS Web Core 
    
    Notification
    Unknown 
    
    Handler
    Not yet determined 
    
    Error Code
    0x80070032 
    
    Config Error
    The configuration section 'system.serviceModel' cannot be read because it is missing a section declaration  
    
    Config File
    \\?\C:\inetpub\wwwroot\YOR24Websevices\web.config 
    
    Requested URL
    http://localhost:8080/ 
    
    Physical Path
    
    
    Logon Method
    Not yet determined 
    
    Logon User
    Not yet determined 
    
    
    Config Source    10:   </system.web>
       11:   <system.serviceModel>
       12:     <bindings>
    

    The webconfig we exported in Visual studio is:

    <?xml version="1.0"?>
    <configuration>
    
      <appSettings>
        <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
      </appSettings>
      <system.web>
        <compilation targetFramework="4.5" />
        <httpRuntime targetFramework="4.5"/>
      </system.web>
      <system.serviceModel>
        <bindings>
          <customBinding>
            <binding name="RightNowSyncBinding">
                <security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
                requireDerivedKeys="true" securityHeaderLayout="Lax" includeTimestamp="false">
                <localClientSettings detectReplays="false" />
                <localServiceSettings detectReplays="false" />
              </security>
              <textMessageEncoding messageVersion="Soap12" />
              <httpsTransport />
            </binding>
          </customBinding>
        </bindings>
        <client>
          <endpoint address="https://tkbc-fleetsupport--tst.custhelp.com/cgi-bin/tkbc-fleetsupport--tst.cfg/services/soap"
            binding="customBinding" bindingConfiguration="RightNowSyncBinding"
            contract="RightNowServiceReference.RightNowSyncPort" name="RightNowSyncPort" />
        </client>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
              <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <services>
          <service name="Yor24Service.Service">
            <endpoint address="" contract="Yor24Service.IService" binding="basicHttpBinding"/>
            <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding"/>
          </service>
        </services>
        <protocolMapping>
            <add binding="basicHttpBinding" scheme="http" />
        </protocolMapping>    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <!--
            To browse web app root directory during debugging, set the value below to true.
            Set to false before deployment to avoid disclosing web app folder information.
          -->
        <directoryBrowse enabled="true"/>
      </system.webServer>
    
    </configuration>
    

    What is the problem with this generated config file?