C # WCF - не удалось вызвать службу - PullRequest
3 голосов
/ 20 апреля 2010

При попытке использовать тестовый клиент WCF для доступа к моему новому веб-сервису я получаю следующую ошибку. Что странно, так это то, что он запускается один раз, а затем начинает выдавать эту ошибку.

Не удалось вызвать службу. Возможные причины: служба недоступна или недоступна; конфигурация на стороне клиента не соответствует прокси; существующий прокси-сервер недействителен. Обратитесь к трассировке стека для более подробной информации. Вы можете попытаться выполнить восстановление, запустив новый прокси-сервер, восстановив конфигурацию по умолчанию или обновив службу.

Мой код (интерфейс):

[ServiceContract(Namespace = "http://rivworks.com/Services/2010/04/19")]
public interface ISync
{
    [OperationContract]
    bool Execute(long ClientID);
}

Мой код (класс):

public class Sync : ISync
{
    #region ISync Members
    bool ISync.Execute(long ClientID)
    {
        return model.Product(ClientID);
    }
    #endregion
}

Мой конфиг (РЕДАКТИРОВАТЬ - выложил весь раздел serviceModel):

<system.serviceModel>
  <diagnostics performanceCounters="Default">
    <messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
      logMessagesAtTransportLevel="true" />
  </diagnostics>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
  <behaviors>
    <endpointBehaviors>
      <behavior name="JsonpServiceBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior name="SimpleServiceBehavior">
        <serviceMetadata httpGetEnabled="True" policyVersion="Policy15"/>
      </behavior>
      <behavior name="RivWorks.Web.Service.ServiceBehavior">
        <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
        <serviceMetadata httpGetEnabled="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="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <services>
    <service name="RivWorks.Web.Service.NegotiateService" behaviorConfiguration="SimpleServiceBehavior">
      <endpoint address=""
                binding="customBinding"
                bindingConfiguration="jsonpBinding"
                behaviorConfiguration="JsonpServiceBehavior"
                contract="RivWorks.Web.Service.NegotiateService" />
      <!--<host>
        <baseAddresses>
          <add baseAddress="http://kab.rivworks.com/services"/>
        </baseAddresses>
      </host>
      <endpoint address=""
                binding="wsHttpBinding"
                contract="RivWorks.Web.Service.NegotiateService" />-->
      <endpoint address="mex"
                binding="mexHttpBinding"
                contract="RivWorks.Web.Service.NegotiateService" />
    </service>
    <service name="RivWorks.Web.Service.Sync" behaviorConfiguration="RivWorks.Web.Service.ServiceBehavior">
      <endpoint address="" binding="wsHttpBinding" contract="RivWorks.Web.Service.ISync" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>

  <extensions>
    <bindingElementExtensions>
      <add name="jsonpMessageEncoding" type="RivWorks.Web.Service.JSONPBindingExtension, RivWorks.Web.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </bindingElementExtensions>
  </extensions>

  <bindings>
    <customBinding>
      <binding name="jsonpBinding" >
        <jsonpMessageEncoding />
        <httpTransport manualAddressing="true"/>
      </binding>
    </customBinding>
  </bindings>    
</system.serviceModel>

2 вопроса:

  1. Чего мне не хватает, что вызывает эту ошибку?
  2. Как я могу увеличить время ожидания услуги?

ТИА!

1 Ответ

4 голосов
/ 22 апреля 2010

Нашли проблему (ы) ...

  1. В веб-службе произошла ошибка, которая не была обработана.
  2. Тестовое приложение не делает ABORT, когда видит ошибку. Вместо этого он остается необработанным (и не зарегистрированным) И , канал теперь заблокирован из-за ошибки.

Использование метода try / catch для внутреннего метода позволяет регистрировать ошибки и , тестовое приложение не блокируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...