首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF REST:在WebGet属性上指定内容类型似乎不起作用

WCF REST:在WebGet属性上指定内容类型似乎不起作用
EN

Stack Overflow用户
提问于 2010-08-16 20:56:26
回答 3查看 6.8K关注 0票数 6

可能是我做错了什么,但我正在从用VS 2010构建的WCF Rest服务中返回XML。在fiddler中,您可以看到它将test/html作为内容类型返回。

代码语言:javascript
运行
复制
 HTTP/1.1 200 OK
 Cache-Control: private
 Content-Length: 222
 Content-Type: text/html; charset=utf-8
 Server: Microsoft-IIS/7.5
 X-AspNet-Version: 4.0.30319
 X-Powered-By: ASP.NET
 Date: Mon, 16 Aug 2010 20:49:55 GMT

因此,我继续在我的方法的webget属性上添加了以下内容,但是它仍然返回text/html .我假设我应该返回文本/XML的内容类型,因为我实际上是在返回XML?

下面是我的方法,我将ResponseFormat添加到属性中..。我不确定我是否需要体型(我不知道它能做什么,但我在一个例子中看到了它:-)

代码语言:javascript
运行
复制
    [WebGet(UriTemplate = "", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)]
    public List<SampleItem> GetCollection()
    {
        // TODO: Replace the current implementation to return a collection of SampleItem instances
        return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
    }

无论如何,在项目更改和重建之后,它仍然返回错误的内容类型.我是不是失约了?

代码语言:javascript
运行
复制
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 222
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 16 Aug 2010 20:54:15 GMT

编辑

好的,我得到了一个可行的解决方案,但是属性方法没有任何影响,如果我把它放在这里,非常strange...but

代码语言:javascript
运行
复制
  WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";

现在我检查fiddler,内容类型实际上是text/xml。

但是我需要把它放在每个方法中,而属性方法似乎没有效果。

有人知道为什么吗?

EN

回答 3

Stack Overflow用户

发布于 2011-11-13 13:54:16

根据的说法,Firefox对text/html的优先级高于text/ xml,从而导致使用xml或json装饰的WCF服务方法返回“错误”响应,尽管我可以想象它是正确的行为。

可以通过显式设置强制响应内容类型。

代码语言:javascript
运行
复制
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";

或者同等的。如果您真的想为所有浏览器/客户端强制特定的内容类型响应,我想这是唯一的选择。

票数 6
EN

Stack Overflow用户

发布于 2010-08-16 21:08:51

见A.

用于ResponseFormat的WebGet

我想你想要。

代码语言:javascript
运行
复制
OutgoingWebResponseContext context = 
    WebOperationContext.Current.OutgoingResponse; 
context.ContentType = "image/jpeg"; 

ResponseFormat控制着其他东西。

票数 0
EN

Stack Overflow用户

发布于 2014-11-07 16:51:30

过去的文章,但这是我在MSDN的博客在WebHttp 4中开始使用WCF WebHttp服务上发现的

您的项目必须使用完整的.NET 4框架,而不是客户机配置文件。

一旦我这样做了,并重新启动了项目,我就能够从引用列表中添加System.ServiceModel.Web

我希望这能帮上忙。

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

https://stackoverflow.com/questions/3497263

复制
相关文章

相似问题

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