방금 첫 WCF REST 서비스를 만들었습니다. 나는 그것이 JSON을 반환하기를 원했기 때문에 나는 응답 형식을 구체화했다. 처음에는 항상 SOAP을 반환했기 때문에 좌절감을 느꼈고 이유를 모르지만 블로거가 피들러를 사용하고있는 것을 보았습니다. 그래서 시도해보고 나서 JSON 응답을 받았습니다. 다음요청에 따라 SOAP 또는 JSON을 반환하는 시점을 WCF가 결정하는 방법은 무엇입니까?
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
하지만이 헤더를 사용하여 요청을 정교하게하려고 :
Accept: application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
을하지만하지 않았다
나는 피들러이 HTTP 헤더를 전송하지 않기 때문에 이유라고 생각합니다 작업. WCF는 JSON이나 SOAP을 언제 사용할 것인가를 어떻게 결정합니까?
JSON을 항상 강제로 반환하는 방법이 있습니까?
서비스를 소비 할 때 SOAP가 아닌 JSON이 반환되는지 확인하고 싶습니다.
감사합니다.
업데이트 : 샘플 코드 :
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1
{
[WebGet(UriTemplate = "", ResponseFormat = WebMessageFormat.Json, RequestFormat= WebMessageFormat.Json)]
public List<SampleItem> GetCollection()
{
// TODO: Replace the current implementation to return a collection of SampleItem instances
return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
}
[WebInvoke(UriTemplate = "", Method = "POST")]
public SampleItem Create(SampleItem instance)
{
// TODO: Add the new instance of SampleItem to the collection
throw new NotImplementedException();
}
[WebGet(UriTemplate = "{id}", ResponseFormat = WebMessageFormat.Json)]
public SampleItem Get(string id)
{
// TODO: Return the instance of SampleItem with the given id
return new SampleItem() { Id = Int32.Parse(id), StringValue = "Hello" };
}
}
당신은 SOAP을 반환 할 수는 -이 아닌 ** 데이터 형식 ** –