Подтвердить что ты не робот

Невозможно активировать службу WCF

Я работаю над WCF, и он отлично работает на localhost. После того как я поместил его на производственный сервер, он меня исключает. "Запрошенная служба, http://global-kazway.kz/Service1.svc 'не может быть активирована. серверных журналов трассировки для получения дополнительной информации".

Я новичок в Сервисах и пытаюсь решить эту проблему почти 3 часа.

Здесь находится клиент App.config;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections></configSections>
  <connectionStrings>
    <add name="TestProject.Properties.Settings.DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /><add name="DBEntities" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="DBEntities1" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://global-kazway.kz/Service1.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService1" contract="kazwayServiceReference.IService1"
        name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>
</configuration>
4b9b3361

Ответ 1

Первый шаг в поиске и устранении неполадок приложения WCF заключается в том, чтобы открыть браузер и ввести URI службы. Итак, на основе клиента: вы переходите к http://global-kazway.kz/Service1.svc

Теперь посмотрим, какие результаты вы получите. Исключение? Сервисный экран? Обычно вы можете получить самую лучшую информацию с этого экрана! Иногда это указывает на то, что ваша проблема такая, как отсутствие поведения.

Сравните ваш web.config с развернутыми записями web.config. Вы можете найти что-то там. Наконец, вы можете просто управлять безопасностью в своей папке. Но дисплей браузера может четко обозначить все для вас.

Ответ 2

Я работаю над проектом, и я столкнулся с той же проблемой. Когда я проверил средство просмотра событий для отслеживания ошибки, я обнаружил, где проблема.

Сообщение Event Viewer:

Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/7540993
 Exception: System.ServiceModel.ServiceActivationException: The service '/CODWebService/Service1.svc' cannot be activated due to an exception during compilation.  The exception message is: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.. ---> System.InsufficientMemoryException: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.

Затем я добавил код ниже в мой файл web.config службы.

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="1" />

Этот элемент должен быть помещен в <system.serviceModel>

Ответ 3

Я работаю над WCF, и он отлично работал на localhost. После того как я поместил его на рабочий сервер, он меня исключает. "Запрошенный сервис", http://global-kazway.kz/Service1.svc ' не удалось активировать. Подробнее см. журналы диагностики диагностики сервера

В этой статье MSDN описано, как настроить трассировку на сервере. После того, как вы это сделали, вы можете посмотреть журналы диагностики диагностики сервера и, вероятно, найдете проблему.

Ответ 4

Чтобы получить более подробное описание ошибки, вставьте этот код в свой файл web.config службы: -

  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>

Затем используйте это поведение службы в своей службе следующим образом: -

<service name="MyService" behaviorConfiguration="MyServiceBehavior" >
        <endpoint address="" binding="basicHttpBinding"  xxxx="" xxxxx="" xxxxx="" xxxx="" xxxx="" />
        <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
        <host>
          <baseAddresses>
            <add baseAddress="http://ServerAddress:AnyPortIfspecified/VirtualDirname"/>
          </baseAddresses>
        </host>
      </service>

Это даст вам подробное описание ошибки.

Вторая вещь, которую вы можете попробовать, это проверить: -

<host>
        <baseAddresses>
          <add baseAddress="http://ServerAddress:AnyPortIf specified/VirtualDir name"/>
        </baseAddresses>
      </host>

убедитесь, что ваш базовый адрес не является localhost. ТС

Ответ 5

Мне удалось решить проблему, выполнив следующие шаги с помощью Visual Studio 2013:

  • Перейдите в папку проекта, где у вас есть файл *.svc
  • Щелкните правой кнопкой мыши *.svc файл → Просмотреть в браузере
  • Подтвердите, можете ли вы просмотреть службу

введите описание изображения здесь

  • Перейдите в папку проекта, где у вас есть файл app.config или где вы хотите использовать эту службу.
  • Проект правой кнопки мыши → Добавить Сервис-справочник
  • Нажмите Обнаружение → В разделе "Сервис" выберите "Сервис" → Дайте нужное имя в своей служебной ссылке → Нажмите ОК
  • Он создаст "ServiceReference1" в папке "Ссылки на службы" и автоматически создаст/обновит файл app.config.

введите описание изображения здесь

Ответ 6

Прежде всего, возьмите адрес URL-адреса службы (например http://youservice:808/Area.Service/Service.svc) и поместите его в поле URL-адреса браузера, чтобы проверить, запущена ли служба.

В моем случае он не работал.

На удаленном сервере был запущен процесс, который использовал много или процессор и оперативную память (процесс sql)

Это блокировало службу.

Закрыв/остановив некоторые процессы в диспетчере задач на удаленном сервере, восстановил службу.