2012-09-27 1 views
1

웹 역할로 실행중인 Azure에 WCF 서비스가 배포되었습니다. Azure는 주식 표준입니다 (.NET 4.0을 실행합니다). 나는 다음과 같은 오류가 점점 오전 :비동기 작업이 포함 된 Azure (.NET 4)에 WCF 서비스가 배포되었습니다. <T> 인터페이스

Type 'System.Threading.Tasks.Task' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types. 
  • 내 클래스 라이브러리 목표는 4
  • 내가 뭔가 에뮬레이터를 통해 내 로컬 컴퓨터에서 실행 팩

을 대상으로 비동기에 대한 참조를 .NET. 내 로컬 컴퓨터는 .NET 4.5가 설치된 Windows 8입니다.

이 유사 할 것으로 보인다 : http://forums.lhotka.net/forums/t/11585.aspx

이 가능, 또는 나는 푸른에 .NET 4.5을 얻을 필요합니까?

답변

0

작업이 Async 구현 (WCF 4.5에서 새로 추가됨)에 대해 반환되는 경우 .NET 4.0에서는 지원되지 않습니다. .NET 4.0은 IAsyncResult 기반 비동기를 지원합니다.

합니까 서비스는 작업이 반환 작업이 데이터로 (그리고 비동기에 대한) 반환되는 경우

다음은 적용? 그것이 바로 '데이터'가 아니라 '일을 마치고'있기 때문에 옳지 않을 것입니다. 어쩌면 당신은 in-proc 프로세스를 테스트 했으므로 작동 했는가?

System.Threading.Tasks.Task는 .NET 4에도 있습니다. 오류가 말하듯 서비스가 작성된 방식에 따라 실제로는 불가능한 작업을 직렬화해야합니다. 서비스 계약과 다시 사용되는 데이터 유형을 살펴 봐야합니다.

+0

hrmm WCF 서비스에서 작업을 반환하는 것은 .NET 4.5에서 확실히 지원됩니다. // 비동기 : [OperationContract (Action = "AppSvcsPing")] 작업 AppSvcsPingAsync(); 동기 선언 : [OperationContract를 (조치 = "AppSvcsPing")] [FaultContract (대해서 typeof (ServiceFault))] 공극 AppSvcsPing(); – KierenH

+0

사실 당신 말이 맞습니다. 이것은 .NET 4.5의 새로운 비동기 동작입니다. .NET 4.0에서는 지원되지 않습니다. .NET 4.0은 이전 IAsyncResult 기반 서비스 구현을 지원합니다. Azure에서 4.5로 업그레이드하면 즉시 문제가 해결됩니다. – merlinbeard

+0

물론 - 그것이 꼭 필요한지 궁금합니다. 비동기 타겟팅 팩을 사용하면 .NET 4에서이 동일한 접근법을 구현할 수 있습니다. .NET 4에서 내 로컬 컴퓨터에서 실행되므로 Azure에서도 .NET 4에서도 작동하지 않는 이유를 이해하려고 시도합니다. 4. – KierenH

관련 문제