Search code examples
visual-studioweb-serviceswcfiis

publishing web service on 3 different IIS gets different result,Metadata publishing for this service is currently disabled


I am programming a web service . When I publish the web service on Server1 (Windows 2012 With IIS 8),it works fine,but if I publish on Server2 (Windows 2012 With IIS 8), it gives following error

Metadata publishing for this service is currently disabled.

I have tested on Server3 (Windows 2019 With IIS 10), I get the above error

it seems that it might be the IIS setting , because in server1 it is working fine.

This is the web.Config of the service

   <?xml version="1.0"?>
 <configuration>

  <connectionStrings>

<add name="ECartContext" connectionString="metadata=res://*/ECartModel.csdl|res://*/ECartModel.ssdl|res://*/ECartModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=databaseServer;initial catalog=ECart;integrated security=True;Connection Timeout=30;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

</connectionStrings>

  <system.web>

 <compilation debug="true" targetFramework="4.0" /> 

</system.web>

<system.serviceModel>

<behaviors>

  <serviceBehaviors>

    <behavior  name="ManagementServiceBehaviour"> 
    
      <serviceMetadata httpGetEnabled="true"/>         

      <serviceDebug includeExceptionDetailInFaults="true"/>

      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
     
    </behavior>       

    </serviceBehaviors> 
 
  <endpointBehaviors>

    <behavior>

      <dataContractSerializer  maxItemsInObjectGraph="2147483646" />

    </behavior> 
   
  </endpointBehaviors>

</behaviors>  

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

<bindings> 
 
  <basicHttpBinding>            
    
 <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" >
     
<readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

    </binding>

  </basicHttpBinding>   
   
</bindings> 

</system.serviceModel>

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="2147483648" />
  </requestFiltering>
</security>
</system.webServer>

<system.diagnostics>
<sources>
  <source name="System.ServiceModel"
             switchValue="Information, ActivityTracing"
             propagateActivity="true">
    <listeners>
      <add name="traceListener"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "c:\log\Traces.svclog" />
    </listeners>
  </source>
</sources>
</system.diagnostics>
 </configuration>

with this config the service works on Server1 only, not Server2 and Server3

how can I check the problem?


Solution

  • You need to add the endpoint in the servicemodel:

        <services>
            <service name="WcfService2.Service1" behaviorConfiguration="ManagementServiceBehaviour">
                <endpoint address="" contract="WcfService2.IService1" binding="basicHttpBinding"></endpoint>
            </service>
        </services>
    

    I suspect that you have an endpoint in server1 but there is no endpoint in serve2 and server3.