2010-07-27 3 views
1

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

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

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="[email protected]"/> 
    </identity> 
    </endpoint> 
</client> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="Ropes.Experience.Administration.Managers.ApprovableFieldManagerBehavior"> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

Сервис для ApprovableFieldClient в настоящее время размещается на bosvc01: 1125

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

ответ

0

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

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

1

Решено. Я удалил все свои попытки/уловы и получил дополнительное описание в сообщении об ошибке