2012-03-17 6 views
0

wcf 서비스에서 프록시를 업데이트하는 데 문제가 있습니다. 하나의 operationcontract 및 하나의 datacontract와의 인터페이스가 있습니다. 새로운 operationcontract를 하나 추가 할 때까지 모든 것이 작동했습니다 ... 서비스를 업데이트하려고 시도 할 때 클라이언트 응용 프로그램 생성 된 프록시 새 operationcontracts 않고 있습니다. 나는 svcutil를 사용하려고했지만 성공하지 않고, 동일한 결과. 잘못된 것이 있습니까?WCF가 프록시를 업데이트하지 않습니다.

[ServiceContract] 
public interface ICreationService 
{ 
    [OperationContract] bool CreateTicket(Ticket ticket); 
    [OperationContract] bool CreateTicket(Ticket ticket,bool asd); 
    [OperationContract] IEnumerable<Ticket> GetTickets(); 
} 

[DataContract] 
public class Ticket 
{ 
    [DataMember] 
    public string Name { get; set; } 

    [DataMember] 
    public int Severity { get; set; } 

    [DataMember] 
    public string Description { get; set; } 
} 
+1

추가 한 새 계약서와 바인딩을 게시 할 수 있습니까? – Tung

+0

[의 ServiceContract] \t 공용 인터페이스 ICreationService \t \t \t {[OperationContract를] 부울 CreateTicket (항공권 티켓); [OperationContract] bool CreateTicket (티켓 티켓, bool asd); // [OperationContract] IEnumerable GetTickets(); \t} [DataContract] 공용 클래스 티켓 { [DataMember를] 공공 문자열 이름 {얻을; 세트; } [DataMember] public int Severity {get; 세트; } [DataMember] 공용 문자열 설명 {get; 세트; } } – user1275513

+0

사람들이 당신을 도울 수 있으려면 web.config, 업데이트 된 계약서 및 웹 브라우저에서 서비스를 탐색 할 때 표시되는 예외를 보여 주어야합니다. – Tung

답변

1

WCF에서는 동일한 이름 (오버로드 없음)을 가진 둘 이상의 메서드를 사용할 수 없습니다.

가 인터페이스 대신 구체적인 유형을 돌아보십시오

[OperationContract(Name="CreateTicketNewName")] 
bool CreateTicket(Ticket ticket); 

편집 : 당신은 당신의 CreateTicket 방법 중 하나 또는 당신이 이름과 같이 당신의 방법에 속성을 추가 할 수의 이름을 변경해야합니다. 이 비슷한 스레드가 있습니다 link

+0

감사하지만 팁이 필요하지만 심지어 삭제했을 때 IEnumerable 메서드 GetTickets()가 프록시에 반영되지 않았습니다 ... – user1275513

+0

이 인터페이스는 프록시에서 생성됩니다. [System.CodeDom.Compiler.GeneratedCodeAttribute ("System.ServiceModel", "4.0.0.0")] [System.ServiceModel.ServiceContractAttribute (ConfigurationName = "ServiceReference2.ICreationService")] 공중 인터페이스 ICreationService { [System.ServiceModel.OperationContractAttribute (조치 = "http://tempuri.org/ICreationService/CreateTicket"ReplyAction = " http://tempuri.org/ICreationService/CreateTicketRe sponse ")] bool CreateTicket (Web.ServiceReference2.Ticket 티켓); } ... 여전히 GetTickets() 메서드가 없습니다 ... 어떤 생각입니까? – user1275513

+0

@ user1275513, GetTickets()를 수정하여 IEnumerable 대신 구체적인 클래스를 반환하도록 – Tung

관련 문제