2013-10-31 3 views
1

그래서 WCF 서비스 참조와 이에 상응하는 Reference.cs 프록시 클래스가 생성 된 상속 된 프로젝트가 있습니다. 나는이를 확인할 수프록시 클래스에 모든 것을 추가하지 않는 WCF에 대한 서비스 참조 옵션 추가

[DataContract] 
public enum ColorAction 
{ 
    [EnumMember] 
    NONE = 0, 
    [EnumMember] 
    GREEN = 1, 
    [EnumMember] 
    RED = 2, 
} 

A의 wsdl보고 노출 :

여기
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 
[System.Runtime.Serialization.DataContractAttribute(Name="MyRecord.ColorAction", Namespace="http://schemas.datacontract.org/2004/07/DocumentsDataAccess.DataClasses")] 
public enum ColorAction : int { 

    [System.Runtime.Serialization.EnumMemberAttribute()] 
    NONE = 0, 

    [System.Runtime.Serialization.EnumMemberAttribute()] 
    GREEN = 1, 

    [System.Runtime.Serialization.EnumMemberAttribute()] 
    RED = 2, 

} 

는 해당 WCF 코드 다음 기존 프록시 클래스에서 나는 enum (고화질)를 볼 수 있습니다 브라우저에서 enum 유형이 나열된 것을 볼 수 있습니다. 그러나

, 때 중 하나를 '새로 고침'또는 다른 방법과 열거의 많은과 함께이 enum 누락, (삭제하고 다시 추가하여 새 기준으로) '서비스 참조 추가'. 프록시 클래스의 다운로드 및 생성은 성공하므로 오류가 발생하지 않습니다.

Add Service Reference 대화 상자에서 '고급'설정을 모두 조정하려고했지만 아무런 차이가없는 것처럼 보입니다. 실제 결과는 기존 코드가 누락 된 다른 코드 중 enums을 호출하고 사용할 수 있기를 기대하기 때문에 서비스 참조를 새로 고치거나 다시 추가 한 후에 코드가 컴파일되지 않습니다.

나는 이미 Reuse types in all referenced assemblies의 선택을 취소했지만 결과가 변경되지 않았습니다. 내가 궁금하네요

,이 Add Service Reference 마법사를 사용하지 에서 내가 찾고 있어요 프록시 클래스를 생성하고 대신 SvcUtil.exe를 사용하는 직접 가서 원래 사람을 했습니까? 나는 혼자 사용하기 전에 그것을 사용했지만 궁금한 점은 내가 사용하고자하는 것은 모든 것을 생성 할 것임을 의미합니다. WCF 서비스가 노출되고 있습니까? 을 얻기 위해 필요한 스위치는 무엇입니까 서비스가 공개적으로 제공됩니까? (참고로 .NET 4.0을 목표로하고 있습니다.)

+0

열거 형 멤버가 EnumMemberAttribute로 표시되어 있습니까? 어떤 종류의 응용 프로그램이 고객입니까? – lex87

+0

업데이트 된 코드를 참조하십시오. '[EnumMember]'속성이 존재합니다. – atconway

답변

1

Enum 클래스의 호스팅 WCF 서비스 코드를 게시 할 수 있습니까?

Add Service Reference은 완전한 참조 파일 SO-SvcUtil.exe vs Add Reference을 생성하지 못할 수도 있습니다. SvcUtil.exe이 대신 사용되었을 수 있습니다. 그것을 시도하고 그게 더 나은 프록시를 빌드하는지보십시오.

+0

코드를 내 게시물에 추가했습니다. – atconway

+0

WCF 쪽의 모든 메서드에서 enum 클래스가 사용됩니까? 그것은 계약의 일부 여야합니다 - 여기를 참조하십시오. (http://stackoverflow.com/questions/6098800/datacontract-for-enums-in-wcf) –

+0

열거 형은 VS2010에서 '서비스 참조 추가'를 사용하여 가져 왔지만 그렇지 않습니다. VS2012에서. IDE를 변경하는 이유에 대한 아이디어는 같은 옵션을 사용해도 다른 프록시를 만들지 만 다른 프록시를 만들 수 있습니까? – atconway