публикация веб-службы в 3 разных IIS дает разный результат, публикация метаданных для этой службы в настоящее время отключена

#visual-studio #web-services #wcf #iis

#visual-studio #веб-службы #wcf #iis

Вопрос:

Я программирую веб-службу. Когда я публикую веб-службу на Server1 (Windows 2012 с IIS 8), она работает нормально, но если я публикую на Server2 (Windows 2012 с IIS 8), это выдает следующую ошибку

Публикация метаданных для этой службы в настоящее время отключена.

Я тестировал на Server3 (Windows 2019 с IIS 10), я получаю вышеуказанную ошибку

похоже, что это может быть настройкой IIS, потому что на server1 она работает нормально.

Это web.Config службы

    <?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=amp;quot;data source=databaseServer;initial catalog=ECart;integrated security=True;Connection Timeout=30;multipleactiveresultsets=True;App=EntityFrameworkamp;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:logTraces.svclog" />
    </listeners>
  </source>
</sources>
</system.diagnostics>
 </configuration>
  

с этой конфигурацией служба работает только на Server1, а не на Server2 и Server3

как я могу проверить проблему?

Комментарии:

1. Можете ли вы предоставить некоторую информацию о конфигурации службы? Я думаю, что это вызвано конфигурацией.

Ответ №1:

Вам нужно добавить конечную точку в servicemodel:

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

Я подозреваю, что у вас есть конечная точка на server1, но нет конечной точки на serve2 и server3.