2013-07-24 2 views
2

У меня есть служба WCF, которая работает в течение длительного времени. Недавно я сделал некоторые изменения, и он работает нормально локально, но сбой с этой стороны сервера сообщений (только для метода, который я изменил, все остальные методы работают нормально)Попробуйте блок catch, не работающий в wcf

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

Проблема заключается в том, что я не могу отлаживать проблему, поскольку она терпит неудачу на сервере. Больше разочарования, я точно знаю, где код сбой, я просто не могу понять, почему, потому что я никогда не могу извлечь данные об исключениях. Вот метод, который попадает в службу WCF.

public bool GenerateSpec(string product) 
    { 
     specService.GenerateSpec(product); 
     return true; 
    } 

Который тогда называет это.

public bool GenerateSpec(string productNumber) 
    { 
     try 
     { 
      SessionFactory factory = new SessionFactory(); 
      Session = factory.CreateSession(DataConnection.PM); 
      productService = new ProductService(Session); 

      // other code 
      return true; 
     } 
     catch (Exception e) 
     { 
      emailService.SendMessage(e.Message + "\n\n" + e.StackTrace); 
      return false; 
     } 
    } 

Я знаю, что он не в Session = factory.CreateSession(DataConnection.PM); линии, но не знаю, почему, и это, кажется, просто игнорируя мои попытки поймать блок и умирает в любом случае. Что может продолжаться?

+1

Это похоже, что не может найти метод. Используйте Fiddler, чтобы увидеть, что он возвращает. – JBrooks

+2

Вы можете установить свой Web.Config таким образом, чтобы детали исключения на стороне сервера были возвращены клиенту, поэтому вы можете увидеть реальное исключение. В вашем сервисе Behavior попробуйте установить Jim

+0

Похоже, что вызов SendMessage генерирует исключение. – djs

ответ

1

Вы можете установить свой Web.Config так, чтобы сведения об исключении на стороне сервера были возвращены клиенту, поэтому вы можете увидеть реальное исключение.

В вашем serviceBehavior, попробуйте установить

<serviceDebug includeExceptionDetailInFaults="True" />

1

Вы уверены, что линия:

emailService.SendMessage(e.Message + "\n\n" + e.StackTrace); 

Не бросать исключение на сервере? Он может достичь вашего блока catch try, но выбрасывает другое исключение в этой строке.

+0

Да, я подумал, что это тоже проблема. Тем не менее, я пошел дальше и прокомментировал это, и это все еще не удается. – Nick

0

Похоже, что он не может найти метод. Используйте Fiddler, чтобы узнать, что возвращает звонок.

Смежные вопросы