需要覆盖asmx Web服务的Http响应代码

时间:2009-04-29 21:06:43

标签: c# flex http exception soap

我的Web服务支持flex / flash客户端,并且在unhandeld异常时抛出扩展System.ServiceModel.FaultException的自定义错误。

我被告知如果http响应代码与200不同,flex / flash无法读取这些自定义错误。这被记录为flex / flash bug:http://bugs.adobe.com/jira/browse/SDK-11841

我需要在未处理的异常时覆盖http返回码。我试图通过在global.asax中包含此代码来实现此目的(此hack已被记录为解决方法):

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    if (Response.StatusCode != 200)
    { // fix response code for flex
        Response.StatusCode = 200;
    }
}

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{    
    if (Response.StatusCode != 200)    
    { // fix response code for flex        
         Response.StatusCode = 200;
     }
}

但是,当遇到未处理的异常时,我的http返回码会返回500;

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在更改响应状态代码之前,您可能需要添加以下代码:

HttpContext.Current.ClearError()

这样可以防止您的状态代码更改被覆盖。