У меня есть служба 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);
линии, но не знаю, почему, и это, кажется, просто игнорируя мои попытки поймать блок и умирает в любом случае. Что может продолжаться?
Это похоже, что не может найти метод. Используйте Fiddler, чтобы увидеть, что он возвращает. – JBrooks
Вы можете установить свой Web.Config таким образом, чтобы детали исключения на стороне сервера были возвращены клиенту, поэтому вы можете увидеть реальное исключение. В вашем сервисе Behavior попробуйте установить –
Jim
Похоже, что вызов SendMessage генерирует исключение. – djs