Требуется ли WCF (dotnet 4) webHttpBinding, чтобы можно было легко возвращать JSON? - PullRequest
0 голосов
/ 12 июля 2011

Моя служба будет использоваться другим приложением в том же устройстве (как и Adobe AIR), и я не могу запустить сервер.В настоящее время я использую службу WCF в качестве службы Windows на коробке для достижения этой цели.Отсутствие сервера означает отсутствие REST (пожалуйста, исправьте меня, если я ошибаюсь в этом), но я все еще хочу, чтобы мой сервис мог возвращать JSON.

Я проводил исследования по этому вопросу, инайти множество людей, использующих сервисы REST с помощью webHttpBinding, а затем установить поведение JSON в конфигурации, однако по вышеуказанным причинам я считаю, что не могу использовать REST.

Итак, в качестве фона мой вопрос таков: может ли служба WCF, работающая как basicHttpBinding, или WSHttpBinding (хотелось бы избежать из-за накладных расходов), вернуть JSON без необходимости вручную его катить?*

Если так, кто-нибудь будет достаточно хорош, чтобы объяснить, как?

Вот текущие подробности моего app.config для службы

<configuration>
<system.serviceModel>
<services>
  <service name="WcfProjectLibrary.ProjectService">
    <endpoint address="" binding="wsHttpBinding" contract="WcfProjectLibrary.IProjectService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8732/Design_Time_Addresses/WcfProjectLibrary/ProjectService/" />
      </baseAddresses>
    </host>
  </service>
</services>
<!--<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>-->
<behaviors>      
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, 
      set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="True"/>
      <!-- To receive exception details in faults for debugging purposes, 
      set the value below to true.  Set to false before deployment 
      to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="False" />          
    </behavior>
  </serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

Спасибо

1 Ответ

1 голос
/ 12 июля 2011

JSON можно вернуть только с webHttpBinding или пользовательской привязкой, используя те же элементы привязки, что и webHttpBinding, и вы все равно можете разместить службу REST (с webHttpBinding) в службе Windows.WebHttpBinding вместе с WebHttpBehavior отвечают за правильную обработку сообщений не-SOAP.

Я понятия не имею, что вы подразумеваете под отсутствием сервера.Процесс предоставления услуги является «сервером» в плане коммуникации.Вам просто нужен полный .NET Framework 4 (профиль клиента не достаточно) и установленный http.sys (он понадобится вам для любого связывания на основе HTTP).

...