1

이 오류는 NetDataContractSerializer (NetDCS)가 사용되고 있지만 참조 어셈블리가 공유되지 않아 클라이언트에 포함되어 있기 때문에 발생합니다. 이 질문은 그것에 관한 것이 아닙니다.'NetDataContractSerializer에서 유형 .. 사용이 지원되지 않습니다.'- NetDataContractSerializer가 사용되는 이유는 무엇입니까?

이 질문은 NetDataContractSerializer가 사용되지 못하도록 막는 입니다. 또는 적어도 그것이 클라이언트에 의해 사용되는 이유를 알아내는 것.

  • 내가 그렇게를 구성하지 않은 경우 클라이언트 사용 NetDCS합니까?

    기사/게시물에 따르면 나는 이것을 발견했습니다 is an explicit step; 수동으로이 프로젝트 또는 WCF 클라이언트에 대해이 기능을 사용하지 않았습니다 - 거기에 기계/프레임 워크 무시 어딘가에 나를 besting?

  • DCS (DataContractSerializer)를 강제로 사용할 수 있습니까?

    그렇다면 이것을 유형별 또는 이름 공간 별 기준으로 강제 적용 할 수 있습니까? 제네릭 프레임 워크 "기본 유형"은 이미 참조 된 어셈블리에 있습니다. 이상적으로 NetDCS로 이러한 문제를 해결할 수는 있지만 NetDCS를 포기할 것입니다.

    그렇지 않은 경우 응답/응답 XML을 monging하는 등의 더 유용한 조치가 있습니까?

    은 (난 괜찮아 수동으로 필요한 계약 리졸버에 추가하고 난도질 생성 된 이름을 처리. 오전)

WCF 테스트 클라이언트 사용 (항상 DCS를 사용?) 나를 생각하게하는 "잘 작동" 현재 문제는 프로젝트의 서비스를 사용할 때 발생하는 NetDCS 직렬화 해제와 관련이 있습니다. WCF 테스트 클라이언트가 어떻게 작동하는지 오해 한 것 같습니다.

여기에 NetDCS 용 참조 어셈블리를 추가하여 해결할 수있는 오류 메시지가 있지만 이 아니기 때문에이 아니라고 생각합니다.)이 문제를 오해하지 않도록하십시오. 95 %가 클라이언트에서 의 비 직렬화에 있음을 확신합니다.. ... 메시지를 역 직렬화하는

'형식의 사용'을하는 동안

포맷터에서 예외가 발생했습니다 ... '는 얻을 전용 컬렉션 NetDataContractSerializer 지원되지 않는. CollectionDataContractAttribute 특성 또는 SerializableAttribute 특성을 사용하여 형식을 표시하거나 속성에 설정기를 추가하십시오. '

그리고 스택 요약 :

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ref ProxyRpc rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService 

WCF 클라이언트 구성이는 "간단한"기본 구성이며, 실행시에 행동을 수정하는 어떤 코드가 없습니다.

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_myServiceBinding" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="endPoint.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_myServiceBinding" 
      contract="MyServive.IMyServiceEndPoint" name="BasicHttpBinding_serviceEndPoint" /> 
    </client> 
    </system.serviceModel> 

서비스 참조는 VS 2013에서 생성되고 프로젝트는 .NET 4를 대상으로합니다.서비스 참조 및 테스트 프로젝트가있는 프로젝트는 모두 간단한 클래스 라이브러리입니다. 그들은 IIS에서 호스팅되지 않습니다.

답변

0

XmlSerializerFormatAttribute (http://msdn.microsoft.com/en-us/library/system.servicemodel.xmlserializerformatattribute.aspx)를 적용하여 클래스에서 XML serializer를 사용하도록 할 수 있습니다.

+0

내 목표는 서버를 변경하면 클라이언트에 "수정"을 적용하는 것입니다. 또한 non-DCS 호환 시리얼 라이저로 전환하는 것은 현재로서는 불가능합니다. 클라이언트가 DCS를 사용하여 (WCF 테스트 클라이언트와 같은) 역 직렬화를 사용하고 클라이언트가 사용하도록 구성되지 않은 NetDCS를 사용하지 않으면 정말 좋을 것입니다. – user2864740