C# 如何从IErrorHandler生成与HTTP 403等效的WCF消息?
我想编写一个实现来处理C# 如何从IErrorHandler生成与HTTP 403等效的WCF消息?,c#,.net,wcf,error-handling,C#,.net,Wcf,Error Handling,我想编写一个实现来处理AuthenticationException实例(一种专有类型),然后在ProvideFault的实现中提供一个传统的Http响应,状态代码为403作为故障消息 到目前为止,我的第一个最佳猜测是连接到一个服务中,但是WCF似乎完全忽略了输出消息,即使调用了错误处理程序 目前,代码如下所示: public class AuthWeb403ErrorHandler : IErrorHandler { #region IErrorHandler Members publ
AuthenticationException
实例(一种专有类型),然后在ProvideFault
的实现中提供一个传统的Http响应,状态代码为403作为故障消息
到目前为止,我的第一个最佳猜测是连接到一个服务中,但是WCF似乎完全忽略了输出消息,即使调用了错误处理程序
目前,代码如下所示:
public class AuthWeb403ErrorHandler : IErrorHandler
{
#region IErrorHandler Members
public bool HandleError(Exception error)
{
return error is AuthenticationException;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
//first attempt - just a stab in the dark, really
HttpResponseMessageProperty property = new HttpResponseMessageProperty();
property.SuppressEntityBody = true;
property.StatusCode = System.Net.HttpStatusCode.Forbidden;
property.StatusDescription = "Forbidden";
var m = Message.CreateMessage(version, null);
m.Properties[HttpResponseMessageProperty.Name] = property;
fault = m;
}
#endregion
}
有了它,我就得到了标准的WCF html“服务器在处理请求时遇到错误”。有关详细信息,请参阅服务器日志。“-如果没有IErrorHandler,将发生这种情况。这是WebServiceHost添加的行为特征吗?还是因为我所传达的信息完全是错误的!?我可以验证事件日志是否确实没有接收到任何内容
我当前的测试环境是一个WebGet方法(XML和Json),托管在使用WebServiceHostFactory创建的服务中,Asp.Net兼容性关闭。服务方法只是抛出有问题的异常。尝试以下操作:
还有这个
试试这个:
还有这个
@Christo-感谢您搜索并找到这些。我最终实现了一个IErrorHandler来生成正确的http响应(只是忘了在这里发布我的解决方案!);我做这件事的方式和这些差不多。不用担心——我在寻找解决同一问题的方法时遇到了它们。也遇到了你的问题,所以我想我会把它们作为你的问题的答案Q@Christo-感谢您搜索并找到这些。我最终实现了一个IErrorHandler来生成正确的http响应(只是忘了在这里发布我的解决方案!);我做这件事的方式和这些差不多。不用担心——我在寻找解决同一问题的方法时遇到了它们。也遇到了你的问题,所以我想我会把它们作为你问题的答案