gpt4 book ai didi

wcf - 如何在ClaimsAuthenticationManager.Authenticate中处理错误

转载 作者:行者123 更新时间:2023-12-03 07:54:51 25 4
gpt4 key购买 nike

我在WCF服务中实现了ClaimsAuthenticaitonManager,以接受来自企业ADFS的传入声明,并将其转换为与系统用户相关的声明(如果未将AD用户注册为系统的一部分,则生成未授权的响应)。这些转换后的声明是通过查询应用程序数据库生成的,我想通过在无法访问数据库来转换声明的情况下从Authenticate方法返回503状态来解决网络连接问题的可能性。

首先,这是一种合理的方法,其次,是否可以在请求管道中执行此操作,我将如何处理?

最佳答案

在WCF SOAP服务中执行此操作的正确方法是使用自定义ErrorHandler。无论是否使用WIF,都是这种情况。

定制错误处理程序实现IErrorHandler。这使您的服务可以引发异常,该异常由WCF传递到已注册的自定义错误处理程序。这使您可以检查异常并创建适当的故障。

在您的情况下,您可能会抛出来自SQL客户端的异常。除了创建正确的错误外,您还可以执行其他任何相关操作(例如,通常记录错误)。
IErrorHandler上的两种方法是
ProvideFault(Exception error, MessageVersion version, ref Message fault),它使您可以检查引发的异常并修改或创建正确的故障。



响应返回给客户端后调用的HandleError(Exception error)。在这里您可以执行类似记录错误的操作。

有关如何执行此操作的详细信息,请参见

http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/07/wcf-extensibility-ierrorhandler.aspx

如上面的链接所示,可以使用代码轻松地连接错误处理程序。只需做一些额外的工作,就可以通过实现自定义服务行为扩展来使用web.config进行连接。有关如何执行此操作的示例,请参见:

http://weblogs.asp.net/pglavich/archive/2008/10/16/wcf-ierrorhandler-and-propagating-faults.aspx

话虽如此,通常对于SOAP服务,您不会直接返回HTTP状态代码(即503状态)。相反,您可以将错误包装在FaultException中并返回。

对于WCF REST,您只需要抛出一个WebFaultException,而webHttpBinding的内置错误处理程序将处理转换为HTTP错误的过程:

http://blogs.msdn.com/b/endpoint/archive/2010/01/21/error-handling-in-wcf-webhttp-services-with-webfaultexception.aspx

关于wcf - 如何在ClaimsAuthenticationManager.Authenticate中处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com