我在客户端有一个.Net服务器应用程序(持有WCF REST JSONP服务)和一个javascript应用程序。
为了避免来自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 :(得分:0)
不幸的是我没有得到任何回复我的问题,但我发现以下,有点有用,链接:http://msdn.microsoft.com/en-us/library/ee816916.aspx。
我明白这种行为是设计性的 ...虽然从javascript(jquery / angular js)开始,但在写这个时候,没有办法读取第二个返回的参数(在我的情况,http错误代码)。
所以,最后我不确定除了解决方法之外是否还有解决方案。现在我们返回CustomResult
,其中包含自定义错误代码和消息。
当这些网络技术彼此不融合时,它们令人失望......你们被迫做了很多变通办法。