Неверный тип контента WCF REST WebService - PullRequest
1 голос
/ 04 августа 2011

Я создал простой REST-сервис, используя шаблон 40 REST WCF (CS), который работает просто отлично. Существует только проблема в том, что ответ использует «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 Ответ

4 голосов
/ 04 августа 2011

Если вы хотите возвратить произвольный контент из службы 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";

...