e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
namespace System.ServiceModel.Dispatcher
|
|
{
|
|
using System.Collections.Generic;
|
|
using System.Runtime.Serialization.Json;
|
|
using System.ServiceModel.Channels;
|
|
using System.ServiceModel.Web;
|
|
using System.Text;
|
|
using System.Xml;
|
|
|
|
class JsonFormatMapping : MultiplexingFormatMapping
|
|
{
|
|
public static readonly WebContentFormat WebContentFormat = WebContentFormat.Json;
|
|
|
|
static readonly string defaultMediaType = JsonGlobals.applicationJsonMediaType;
|
|
static Dictionary<Encoding, MessageEncoder> encoders = new Dictionary<Encoding, MessageEncoder>();
|
|
static object thisLock = new object();
|
|
|
|
public JsonFormatMapping(Encoding writeEncoding, WebContentTypeMapper contentTypeMapper)
|
|
: base(writeEncoding, contentTypeMapper)
|
|
{ }
|
|
|
|
public override WebContentFormat ContentFormat
|
|
{
|
|
get { return JsonFormatMapping.WebContentFormat; }
|
|
}
|
|
|
|
public override WebMessageFormat MessageFormat
|
|
{
|
|
get { return WebMessageFormat.Json; }
|
|
}
|
|
|
|
public override string DefaultMediaType
|
|
{
|
|
get { return JsonFormatMapping.defaultMediaType; }
|
|
}
|
|
|
|
protected override MessageEncoder Encoder
|
|
{
|
|
get
|
|
{
|
|
lock (thisLock)
|
|
{
|
|
if (!JsonFormatMapping.encoders.ContainsKey(this.writeEncoding))
|
|
{
|
|
JsonFormatMapping.encoders[this.writeEncoding] = new JsonMessageEncoderFactory(this.writeEncoding, 0, 0, new XmlDictionaryReaderQuotas(), false).Encoder;
|
|
}
|
|
}
|
|
return JsonFormatMapping.encoders[this.writeEncoding];
|
|
}
|
|
}
|
|
}
|
|
}
|