#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.