首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将RESTful WCF服务创建为JSON而不声明ServiceKnownType

是否可以将RESTful WCF服务创建为JSON而不声明ServiceKnownType
EN

Stack Overflow用户
提问于 2013-11-19 20:58:45
回答 1查看 1.1K关注 0票数 0

我有一个C# WCF RESTful服务充当JSON传递--这意味着我的服务对另一个RESTful服务执行HTTPGet --接收回JSON响应,我需要将该响应返回给调用方。这种传递服务的原因是我们的企业不允许不同的域进行通信,这将作为一个解决方案公开。当已知类型包含在此服务中时,一切正常,但是,这意味着对于每次DataContract更改都必须更新/重新发布中间服务,因为它不应该关心接收到什么JSON才能返回调用方。

我尝试使用JSON.NET将JSON字符串反序列化为动态对象。尽管我的服务契约说它将返回一个动态类型,并且所有都符合,但我在运行时得到了一个ServiceKnownType序列化错误。我不能在运行时b/c中动态声明KnownType,我希望我的服务对类型一无所知。

(A)域X中的网络应用-> (B)面向公众的服务--> (C)域Y上的RESTful WCF服务

是否有可能甚至不将收到的JSON反序列化并在响应中将其发送出去?其他想法?有什么代码可以帮助更好地描述我自己吗?

谢谢!

这就是解决方案,感谢L.B. :)

代码语言:javascript
复制
            //Call other WS  and get the Json response
            var request = WebRequest.Create(requestUri);
            request.ContentType = "application/json; charset=utf-8";
            string text;
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (var sr = new StreamReader(response.GetResponseStream()))
                {
                    text = sr.ReadToEnd();

                    var data = new MemoryStream(Encoding.UTF8.GetBytes(text));
                    WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
                    WebOperationContext.Current.OutgoingResponse.ContentLength = data.Length;

                    return data;
                }
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 21:12:01

您可以创建一个返回流的方法(可以认为它是“返回任何对象”)

代码语言:javascript
复制
[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json)]
public Stream SomeMethod(......)
{
    //Call other WS  and get the Json response

    var data = new MemoryStream(Encoding.UTF8.GetBytes(json));
    WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
    WebOperationContext.Current.OutgoingResponse.ContentLength = data.Length;

    return data;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20081894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档