如何使用自定义消息在.net中的Web服务上抛出异常?

时间:2009-11-17 23:28:40

标签: c# .net flex web-services

如何在C#Web服务中抛出自定义异常,以便flex读取错误错误?

我试过像这样抛出一个异常

throw new Exception("invalid key");

但是FaultEvent无法解析flex中的消息。

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

麦克