NETFx Json.NET MediaTypeFormatter 너겟 패키지를 사용하여 WCF REST 서비스 (4.0 프레임 워크)에서 기본 DataContractJsonSerializer를 스왑 아웃하려고합니다. 내 프로젝트에서 패키지를 다운로드하고 Global.asax 파일에 다음 코드 줄을 추가했습니다. 나는이 서비스를 실행할 때WCF REST 서비스 용 JSON.NET 시리얼 라이저
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
// Create Json.Net formatter serializing DateTime using the ISO 8601 format
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new IsoDateTimeConverter());
var config = HttpHostConfiguration.Create();
config.Configuration.OperationHandlerFactory.Formatters.Clear();
config.Configuration.OperationHandlerFactory.Formatters.Insert(0, new JsonNetMediaTypeFormatter(serializerSettings));
}
는하지만 여전히 직렬화의 DataContractJsonSerilizer를 사용합니다. 아래는 내 봉사에서 돌아 오는 수업입니다.
[DataContract]
public class SampleItem
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string StringValue { get; set; }
[DataMember]
public DateTime DateTime { get; set; }
}
아래는 Fiddler의 서비스 응답입니다.
당신은 날짜 시간 나는 위의 코드에 serializerSettings에서 지정한 ISO 형식이 아닌 것을 알 수 있습니다. 이것은 JSON.NET serializer가 객체 직렬화에 사용되지 않는다는 것을 알려줍니다.
도움을 주시면 감사하겠습니다.
실제로 비슷한 시나리오가 발생하지만 내 WCF 서비스는 Windows 서비스에서 호스팅됩니다. 위의 코드는 다음 예외를 throw합니다. "System.InvalidOperationException : 'ServiceHostingEnvironment.EnsureServiceAvailable'을 현재 호스팅 환경에서 호출 할 수 없습니다.이 API를 사용하려면 호출하는 응용 프로그램이 IIS 또는 WAS에서 호스팅되어야합니다." 아이디어가 있으십니까? –