Обработка ошибок в службе WCF - PullRequest
0 голосов
/ 28 февраля 2011

Со следующим примером метода обслуживания: -

[PrincipalPermission(SecurityAction.Demand, Role="BUILTIN\\Administrator")]
public string GetTest()
{
  try
  {
    return "Hello";
  }
  catch (Exception ex)
  {
    throw ex;
  }
}

Как получить ошибку из метода, если вызывающая сторона не в правильной роли. Во время разработки ошибка разбивается на строку метода (т.е. общедоступную строку GetTest) и не достигает зацепки. Во время выполнения это сообщается в моем приложении silverlight как необработанная ошибка (у меня есть попытка .. ловить блоки там тоже). Кажется, нет места, где можно поймать ошибку, поскольку она никогда не попадает в блоки try !!

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

Проверка роли выполняется (по времени выполнения WCF) до метод фактически вызывается, а не внутри метода!

Вам необходимо обработать это исключение на стороне вызывающего абонента , когда вы делаете этот вызов.

Если вам нужно проверить определенные условия в коде службы, не украшайте метод атрибутом, а используйте провайдера ролей в коде для проверки заданного условия.

2 голосов
/ 28 февраля 2011

Если вам нужен глобальный обработчик ошибок для службы WCF, вы можете реализовать IErrorHandler и добавить его в пользовательском поведении.Операция не может перехватить исключения, выданные за пределами блока try.

...