2009-04-29 106 views
2

我的Web服務支持flex/flash客戶端,並且在unhandeld異常時拋出自定義錯誤,以擴展System.ServiceModel.FaultException。需要覆蓋來自asmx web服務的Http響應代碼

我已被告知,如果HTTP響應代碼爲200不同,這是記錄爲柔性/閃存錯誤的Flex /閃光無法讀取這些自定義的故障:http://bugs.adobe.com/jira/browse/SDK-11841

我需要重寫HTTP在未處理的異常時返回代碼。我試圖通過在Global.asax中的代碼來做到這一點(這個技巧已被記錄作爲一個變通):

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

你可能需要改變響應狀態代碼之前添加以下代碼:

HttpContext.Current.ClearError() 

這應該保持您的狀態代碼更改從得到覆蓋。

+0

我將此行添加到Application_PreSendRequestHeaders()和Application_EndRequest()。 故障返回碼仍爲500。 此代碼(ServiceLayer項目的global.asax)是否可能未執行? – 2009-04-30 22:34:03