Потоки как сервис WCF - PullRequest
1 голос
/ 27 июля 2010

У меня есть служба Windows, которую я должен установить на машине и запустить достаточно долго, чтобы отправить электронное письмо с журналами, а затем поспать 24 часа. Если я вызываю метод службы из веб-клиента, он работает нормально, но когда я вызываю его из службы Windows, он каждый раз завершается сбоем, и информация об ошибке не дает мне ничего конкретного для исследования:

Объект связи, System.ServiceModel.Channels.ServiceChannel, нельзя использовать для связи, поскольку он находится в состоянии Failed.

 public partial class EDBDailyLogMailer : ServiceBase
 {
    Thread thread;

    public EDBDailyLogMailer()
    {
        InitializeComponent();
        this.ServiceName = "EDB Daily Log Mailer";
    }

    protected override void OnStart(string[] args)
    {
        try
        {
            thread = new Thread(MailLogDaily);
            thread.Start();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    static void MailLogDaily()
    {
        while (true)   
        {
            try
            {
                using (ApprovableFieldClient client = new ApprovableFieldClient())
                    client.EmailEventLog();
                Thread.Sleep(86400000);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

Код в EmailEventLog () отлично работает при вызове из других мест, поэтому я не буду публиковать этот код. Вот моя конечная точка в файле App.config:

 <system.serviceModel>
<bindings>
  <netTcpBinding>
    <binding name="ExperienceServiceBinding" maxReceivedMessageSize="1048576" maxBufferSize="1048576"/>
  </netTcpBinding>
</bindings>
<client>
  <endpoint bindingConfiguration="ExperienceServiceBinding" address="net.tcp://bosvc01:1125/ApprovableFieldService" binding="netTcpBinding" contract="Ropes.Experience.Administration.Contracts.Services.IApprovableFieldService">
    <identity>
      <servicePrincipalName value="firstname.lastname@somecompany.com"/>
    </identity>
  </endpoint>
</client>
<behaviors>
  <serviceBehaviors>
    <behavior name="Ropes.Experience.Administration.Managers.ApprovableFieldManagerBehavior">
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Служба для ApprovableFieldClient размещена на bosvc01: 1125

Любые предложения будут с благодарностью. Спасибо.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

решаемая. Я удалил все свои попытки / ловли и получил более подробную информацию в сообщении об ошибке

0 голосов
/ 27 июля 2010

Возможно, у вас проблема из-за использования блока вокруг вашего прокси-объекта клиента. Смотрите эту статью: http://msdn.microsoft.com/en-us/library/aa355056.aspx

Вызов для удаления вашего прокси-объекта клиента может маскировать основное исключение.

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