javascript에서 호출해야하는 wcf 서비스를 만들어야합니다.AJAX 지원 wcf 서비스에서 DataContractResolver 사용
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ClientRequestService : IClientRequestService
{
[WebGet]
[ApplyProxyDataContractResolver]
public ResponseData ProcessClientRequest(String pageId)
{
...
}
}
이 방법은 유형이 나는 컴파일 타임에 알 수없는 물체를 반환해야 다음과 같이 서비스가 정의된다. 따라서 호출 될 때 다음 예외가 발생합니다.
형식 ... 데이터 계약 이름이 ... 필요하지 않습니다. DataContractResolver를 사용하거나 KnownTypeAttribute 특성을 사용하거나 DataContractSerializer에 전달 된 알려진 형식 목록에 추가하여 알려진 형식 목록에 정적으로 알려지지 않은 형식을 추가하는 것이 좋습니다.
맞춤 DataContractResolver를 만들고 내 서비스에 맞춤 DataContractResolver를 첨부하기 위해 IOperationBehavior 인터페이스를 구현하는 속성을 만듭니다.
public class ApplyProxyDataContractResolverAttribute : Attribute, IOperationBehavior
{
public void ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
{
var dataContractSerializerOperationBehavior =
description.Behaviors.Find<DataContractSerializerOperationBehavior>();
dataContractSerializerOperationBehavior.DataContractResolver = new ProxyDataContractResolver();
}
}
ApplyDispatchBehavior가 성공적이라고하지만 내 사용자 지정 DataContractResolver의 방법은 호출되지 않습니다 내가 같은 예외를 얻을 방법
.ServiceRoute 클래스를 사용하거나 svc 파일을 사용하여 서비스를 등록하려고했는데 어쨌든 작동하지 않습니다.
이 솔루션을 얻는 데 사용한 어떤 문서가 있습니까? – kroonwijk
동일한 문제가 발생합니다. 누구나 대답 있어요? – kelloti