これをやってのけるには、設定でいくつかのことを行う必要があります
1) サービスに別のエンドポイントを追加します。以下に示すように、basicHttp と webHttp の両方があります。
<system.serviceModel>
<services>
<service name="<serivceclass>" behaviorConfiguration="DefaultBehavior">
<endpoint binding="basicHttpBinding" contract="<serviceinterface>" bindingConfiguration="soapBinding"/>
<endpoint address="json" binding="webHttpBinding" behaviorConfiguration="jsonBehavior" contract="<serviceinterface>" bindingConfiguration="jsonBinding"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</system.serviceModel>
2) バインディング構成を追加します (ここでも web と basichttp の両方が表示されます)。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="soapBinding" maxBufferPoolSize="9000000" maxBufferSize="9000000" maxReceivedMessageSize="9000000">
<readerQuotas maxArrayLength="9000000" maxBytesPerRead="9000000" maxDepth="9000000" maxNameTableCharCount="9000000" maxStringContentLength="9000000"/>
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="jsonBinding">
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
3) 動作をセットアップします。名前と、ステップ 1 でリストされたエンドポイントとの相関関係に注目してください。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp defaultOutgoingResponseFormat="Json" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="9000000" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
私が有効にして構成するもののいくつかはオプションですが、これにより、Web と json のものを使用する方法と、javascript などで作業していないときに Visual Studio に組み込まれているツールを使用する方法の両方でサービスにアクセスできます。
注 1: json 部分を使用している場合のエンドポイントは、たとえばhttp://myhost.com/myservice.svc/json/MyMethodNameになります。これは、サービスの適切なエンドポイント行の「アドレス」属性を変更することで変更できます。 (基本アドレスが空で、webHttp が「json」であることを確認してください)