WCF REST Web服务内容类型错误

时间:2011-08-04 11:21:49

标签: wcf web-services rest service

我使用WCF REST模板40(CS)创建了一个简单的REST服务,它运行得很好。只有一个问题是响应使用“application / json”作为内容类型,但我需要“text / plain”。

问题已在博文中解释,但由于模板我没有使用.svc文件。所以建议的解决方案对我不起作用。

我的服务合同:

[ServiceContract]
public interface ICouchService
{
    [OperationContract]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/", Method = "GET")]
    ServiceInformation Hello();

    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/piclib/{id}")]
    CouchDocument GetDocument(string id);
}

的web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
  </system.webServer>

  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false"/>
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>

1 个答案:

答案 0 :(得分:4)

如果要从WCF REST服务返回任意内容,则需要使用Raw编程模型 - http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx。您使用的模板使用服务路径定义端点,因此全部为您设置。现在,您需要定义返回Stream参数的操作,并在操作中设置适当的内容类型:WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";