में डिफ़ॉल्ट JSON serializer को बदलें, मैं JSON.NET के साथ डिफ़ॉल्ट WCF JSON (सभी डेटा प्रकारों के लिए) क्रमबद्धता को प्रतिस्थापित करना चाहता हूं। मैंने पूरे नेट पर खोज की है और एक कामकाजी समाधान नहीं मिला।डब्ल्यूसीएफ 4 में JSON.NET
protected void Application_Start(object sender, EventArgs e)
{
// Create Json.Net formatter serializing DateTime using the ISO 8601 format
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new IsoDateTimeConverter());
serializerSettings.Converters.Add(new BinaryConverter());
serializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
serializerSettings.Converters.Add(new BinaryConverter());
serializerSettings.Converters.Add(new StringEnumConverter());
var config = HttpHostConfiguration.Create().Configuration;
Microsoft.ApplicationServer.Http.JsonMediaTypeFormatter jsonFormatter = config.OperationHandlerFactory.Formatters.JsonFormatter;
config.OperationHandlerFactory.Formatters.Remove(jsonFormatter);
config.OperationHandlerFactory.Formatters.Insert(0, new JsonNetMediaTypeFormatter(serializerSettings));
var httpServiceFactory = new HttpServiceHostFactory
{
OperationHandlerFactory = config.OperationHandlerFactory,
MessageHandlerFactory = config.MessageHandlerFactory
};
//Routing
RouteTable.Routes.Add(
new ServiceRoute(
"Brands", httpServiceFactory,
typeof(Brands)));
}
यह Web.Config है:
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
List<TestObject> Get();
यह Global.asax में कोड है:
[JsonObject]
public class TestObject
{
[JsonProperty("JsonNetName")]
public string Name = "John";
[JsonProperty]
public DateTime Date = DateTime.Now;
}
यह मेरा WCF समारोह है:
यह मेरा वस्तु है :
<endpointBehaviors>
<behavior name="Behavior_Brands">
<webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Bare" />
</behavior>
</endpointBehaviors>
और सेवाओं अनुभाग:
"http://localhost:30000/Brands/Get"
[{"Date":"\/Date(1354364412708+0200)\/","Name":"John"}, {"Date":"\/Date(1354364412708+0200)\/","Name":"John"}]
JSON जवाब स्पष्ट रूप से ध्यान नहीं देता:
<service name="TestApp.CoreWCF.Brands">
<endpoint address="" behaviorConfiguration="Behavior_Brands" binding="webHttpBinding" contract="TestApp.CoreWCF.IBrands">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
और अंत में, यह जब URL की शुरूआत मैं क्या हो रही है है JSON.NET विशेषताएँ।
क्या परीक्षण के परिणाम है कि आप करने के लिए संकेत मिलता है यह निश्चित रूप से तेजी से होता है कर रहे हैं के लिए सीधे धारावाहिक वापसी? दुर्भाग्यवश मेरे वैकल्पिक मामले (500 केबी ऑब्जेक्ट पदानुक्रम) के लिए इसी तरह की वैकल्पिक तकनीकों का उपयोग करके, ऐसा लगता है कि यूएसएफ 8 की प्रतिलिपि JSON.NET serialization _plus_ बाइट सरणी का डबल चरण किसी भी तरह से यह केवल सादा DataContractJsonSerializer की तुलना में अधिक महंगा बनाता है। :-( – icelava