Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从IErrorHandler生成与HTTP 403等效的WCF消息?_C#_.net_Wcf_Error Handling - Fatal编程技术网

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响应(只是忘了在这里发布我的解决方案!);我做这件事的方式和这些差不多。不用担心——我在寻找解决同一问题的方法时遇到了它们。也遇到了你的问题,所以我想我会把它们作为你问题的答案