gpt4 book ai didi

c# - WCF 中的 Provide Fault 方法接收没有详细信息的 FaultException

转载 作者:太空狗 更新时间:2023-10-29 20:29:48 25 4
gpt4 key购买 nike

我已经为我的服务实现了一个 IErrorHandler,如果授权错误,它需要返回 403 而不是 400。
这就是我的 ProvideFault 方法的样子:

public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (((FaultException)error).Code.SubCode.Name == "FailedAuthentication")
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription =
"StatusCode is forced to change in order to have the correct response on authentication.";
}
}

我想知道是否有任何方法可以为错误及其状态代码编写更好的检查,或者如何获得授权异常而不是更通用的 FaultException 女巫?。我觉得在 FailedAuthentication 字符串之后检查不太好,事实上它的授权不是身份验证...

最佳答案

如果您使用的是 C# 6.0 及更高版本,则可以使用 Exception Filters .例子是:

public string Example() 
{
try
{
/* Method Logic */
return string.Empty;
}
catch (System.Net.Http.HttpRequestException e) when (e.Message.Contains("400"))
{
return "unauthorized";
}
}

在你的情况下:

public string Example() 
{
try
{
/* Method Logic */
return string.Empty;
}
catch (System.Net.Http.HttpRequestException e) when (e.Message.Contains("400"))
{
ProvideFault(e, "", e.Message);
}
}

public void ProvideFault(System.Net.Http.HttpRequestException error, MessageVersion version, ref Message fault)
{
/* your logic according to your needs. */
}

关于c# - WCF 中的 Provide Fault 方法接收没有详细信息的 FaultException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219244/

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