【问题标题】:How to throw an exception on a web service in .net with custom message?如何使用自定义消息在 .net 中的 Web 服务上引发异常?
【发布时间】:2010-12-17 16:18:39
【问题描述】:

如何在 C# Web 服务中引发自定义异常,以便 flex 读取错误时的错误?

我尝试简单地抛出这样的异常

throw new Exception("invalid key");

但 FaultEvent 无法解码 flex 中的消息。

编辑:我真正想做的是让 flex 区分 Web 服务中的异常,例如知道异常是数据库连接错误还是标头错误中的无效键

【问题讨论】:

  • 而且也不区分异常类型?

标签: c# .net apache-flex web-services


【解决方案1】:

不确定,但这可能会有所帮助;杰夫阿特伍德说.NET doesnt throw very good SOAP exceptions

【讨论】:

  • 我确实读过这篇文章,一开始没明白,但现在明白了,谢谢
【解决方案2】:

您需要以某种方式使 .net 网络服务器返回正常的 soap 异常响应,但使用 HTTP 代码 200 而不是 500(标准)。这是因为当服务器以 500 响应时,浏览器会在将详细信息提供给 Flash Player 插件之前删除所有有用的信息。在 Java 上,您可以使用过滤器来执行此操作,但我不确定如何在 .net 中执行此操作

【讨论】:

    【解决方案3】:

    在.net webserver中,您可以定义自己的SoapExtention类并覆盖ProcessMessage函数,在“SoapMessageStage.BeforeSerialize”阶段,您可以使用以下代码更改http状态码:

                        HttpContext currrentContext = HttpContext.Current;
                        currrentContext.Response.StatusCode = 200;
    

    迈克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2018-05-05
      • 1970-01-01
      相关资源
      最近更新 更多