WCF服务中的错误处理

时间:2011-02-28 16:02:58

标签: wcf authentication principalpermission

使用以下服务方法示例: -

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

如果调用者的角色不正确,如何从方法中获取错误。在设计时,错误在方法行(即公共字符串GetTest)上中断,并且没有到达catch。在运行时,它在我的silverlight应用程序中报告为未处理的错误(我已经尝试了..在那里捕获块)。 似乎没有地方可以捕获错误,因为它永远不会进入try块!!

2 个答案:

答案 0 :(得分:3)

在实际调用方法之前(通过WCF运行时)进行角色检查 - 不在方法内部!

进行此调用时,您需要在来电方处理此例外。

如果您需要检查服务代码中的某些条件,请不要使用属性修饰方法,而是在代码中使用角色提供程序来检查给定条件。

答案 1 :(得分:2)

如果您需要WCF服务的全局错误处理程序,则可以实现IErrorHandler并将其添加到自定义行为中。操作无法捕获在其try块之外抛出的异常。