2012-08-03 50 views
1

我有一個.Net服務器應用程序(持有WCF REST JSONP服務)和一個JavaScript應用程序在客戶端。如何在使用JavascriptCallbackBehavior時使用HTTP錯誤代碼拋出WebFaultException?

要避免跨域來自javascript方面的調用我們使用JSONP進行通信。爲了讓我們的生活更輕鬆,使用來自服務器端的javascript回調,我們使用JavascriptCallbackBehavior:WCF將所有JSON響應包裝在回調函數中。

[JavascriptCallbackBehavior(UrlParameterName = "$callback")] 
[ServiceBehavior(...)] 
public class MySvcREST : ISvcREST 
{ 
    public bool SvcMethod() 
    { 
     throw new WebFaultException<string>("ERROR!", HttpStatusCode.InternalServerError); 
    } 
} 

如果我使用上面的代碼,我會從我的服務提出了以下回應:

HTTP/1.1 200 OK 
Content-Length: 31 
Content-Type: application/x-javascript 
Server: Microsoft-HTTPAPI/1.0 
Date: Fri, 03 Aug 2012 11:43:26 GMT 

angular.callbacks._1("ERROR!",500); 

EDIT1:其實即使我刪除JavascriptCallbackBehavior並保留默認callback的名字,我會有類似的效果,這不是很好。

我真的想要得到HTTP 500錯誤代碼,而不是一個HTTP 200 OK裏面的錯誤。

如何解決我的問題,或者有另一種方法從WCF服務中獲取JSONP?

+0

@CarlosFigueira是這些東西的主人......我會感謝您的幫助:) – Learner 2012-08-03 12:07:36

回答

0

不幸的是我沒有得到任何答覆我的問題,但我發現以下,有點有用,鏈接:http://msdn.microsoft.com/en-us/library/ee816916.aspx

我瞭解,這行爲是設計 ...雖然從JavaScript端(jQuery的/角JS),在這個時候寫的,沒有辦法讀取第二返回的參數(在我的情況下, http錯誤代碼)。

因此,最後我不確定除了解決方法之外是否有解決方案。現在我們返回一個CustomResult,其中包含一個自定義錯誤代碼和消息。

這些網絡技術在彼此不融合時非常令人失望......你被迫採用了很多解決方法。

相關問題