Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用wcf rest服务并以xml或json的形式返回数据_C#_Json_Wcf_Serialization_Wcf Rest - Fatal编程技术网

C# 调用wcf rest服务并以xml或json的形式返回数据

C# 调用wcf rest服务并以xml或json的形式返回数据,c#,json,wcf,serialization,wcf-rest,C#,Json,Wcf,Serialization,Wcf Rest,我试图从WCF REST服务获取数据,以xml或json的形式返回 当使用WebInvoke属性设置RequestFormat和ResponseFormat并将两者设置为适当的格式时,我可以将数据返回为xml或json: 但是我不想硬编码这种格式,所以在网上进一步研究了它,我发现了一些东西,但不管我做什么,它似乎总是以xml格式返回我的数据 以下是我所做的: 从WebInvoke属性中删除了RequestFormat和ResponseFormat [OperationContract] [Web

我试图从WCF REST服务获取数据,以xml或json的形式返回

当使用WebInvoke属性设置RequestFormat和ResponseFormat并将两者设置为适当的格式时,我可以将数据返回为xml或json:

但是我不想硬编码这种格式,所以在网上进一步研究了它,我发现了一些东西,但不管我做什么,它似乎总是以xml格式返回我的数据

以下是我所做的:

  • 从WebInvoke属性中删除了RequestFormat和ResponseFormat

    [OperationContract]
    [WebInvoke(
       Method = "GET",
       RequestFormat = WebMessageFormat.Json,
       ResponseFormat = WebMessageFormat.Json,
       BodyStyle = WebMessageBodyStyle.Wrapped,
       UriTemplate = "Search/{searchName}/{fieldValues}")]
    Result Search(string searchName, string fieldValues);
    
  • 我在我的web.config中添加了以下部分:

    <system.serviceModel>
      <standardEndpoints>
        <webHttpEndpoint>
          <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
        </webHttpEndpoint>
      </standardEndpoints>
    </system.serviceModel>
    
  • 最后,我发现了这一点,并尽我所能地按照步骤进行操作,但又一次没用了!只需查找“消息格式选择部分”


  • 我显然错过了什么,但是什么???有人对如何实现这一目标有什么想法吗?

    你所要求的是我今天实际实现的东西。我需要创建一个RESTful服务,作为回报提供JSON或XML。它有点特定于域,但如果您在两行之间阅读,下面的博客将展示如何通过MemoryStream返回类型实现这一点:


    在GetResourceFeed函数中,您可以看到如何使用请求中的Accept值在JSON和XML(atom)之间切换。请随意试用。

    ASP.NET Web API
    服务内置了此功能。如果可以的话就使用它,除非你需要一些非常特定于WCF的东西。我已经试过了。见第4点。我又试了一次,确保我的代码是基于你提到的那篇文章的,但是没有用。它仍然无法以json格式返回数据,但是如果我使用WebInvoke,xml/json两种格式都可以完美地工作。还有什么建议吗?您是否将该测试与示例中的MemoryStream相结合?您是否用MemoryStream替换了结果返回类型?我明白您的意思!我不认为这是重要的部分,但也许这将是实际的解决方案。我自己也在考虑这个问题,即在服务器端手动转换为相关格式,而不是依靠MS自动转换,因为存在问题,但也因为xml格式问题!我现在将这个问题留待讨论,稍后会向您通报最新情况,因为我在这个问题上花费了太多时间,我在这里面临完成一个项目的压力。但肯定会恢复。
    WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";