使用以下服务方法示例: -
[PrincipalPermission(SecurityAction.Demand, Role="BUILTIN\\Administrator")]
public string GetTest()
{
try
{
return "Hello";
}
catch (Exception ex)
{
throw ex;
}
}
如果调用者的角色不正确,如何从方法中获取错误。在设计时,错误在方法行(即公共字符串GetTest)上中断,并且没有到达catch。在运行时,它在我的silverlight应用程序中报告为未处理的错误(我已经尝试了..在那里捕获块)。 似乎没有地方可以捕获错误,因为它永远不会进入try块!!
答案 0 :(得分:3)
在实际调用方法之前(通过WCF运行时)进行角色检查 - 不在方法内部!
进行此调用时,您需要在来电方处理此例外。
如果您需要检查服务代码中的某些条件,请不要使用属性修饰方法,而是在代码中使用角色提供程序来检查给定条件。
答案 1 :(得分:2)
如果您需要WCF服务的全局错误处理程序,则可以实现IErrorHandler并将其添加到自定义行为中。操作无法捕获在其try块之外抛出的异常。