2012-06-15 2 views
0

선택적 입력 매개 변수를 사용하기 위해 리팩토링해야하는 WCF 웹 서비스 메서드 (3.5 NET Framework)가 있습니다. Mi 조사는 4.0에 개념이 도입 될 때 선택적 매개 변수를 결론 지었으므로 문제를 해결하기 위해 몇 가지 해결 방법을 수행해야합니다. 내 코드 업데이트는 다음과 같습니다WCF 서비스 메서드 오버로드 문제 - 도움이 필요합니다.

나는 또한 나의 작업 계약을 갱신 한
partial class Class1: IService { 

    public int MethodName (int param1, string param2) 
    { 
     // code here 
    } 

    public int MethodName (int param1) 
    { 
     // code here 
     string param2 = FillInInternally(); 
     return this.MethodName(param1, param2); 
    } 

: 그 설명 갖는

[ServiceContract] 
public interface IService 
{ 
    [OperationContract(Name = "Alias1")] 
    int MethoName(int param1, string param2); 

    [OperationContract(Name = "Alias2")] 
    int MethoName(int param1); 

} 

public partial class ServiceClient : ClientBase <IService>, IService 
{ 

    public int MethoName(int param1, string param2) 
    { 
     return Channel.MethodName(param1, param2); 
    } 

    public int MethoName(int param1) 
    { 
     return Channel.MethodName(param1); 
    } 
} 

을, 나는 웹 서비스가 제대로 구축 얻을 수있었습니다. 오 물론 통합 테스트도 완벽하게 실행되었습니다. 그 후 서버에 설치해야하고 WSDL을 테스트 할 때 열 1 행 1의 svc 파일에 오류가 있음을 나타내는 issu에 직면했습니다 (정확한 오류 메시지가 포함되어 있지 않음을 유의하십시오. 주말에 문제가 발생하지 않도록 WS를 이전 버전으로 롤백했습니다.)

내 질문은 : 누군가 내가 개발에서 뭔가를 놓치고 있다고 생각합니까? 또는 "설치"작업을 수행 할 때 WCF 서비스 메서드가 올바르게 오버로드되도록 할 수 있습니까? 문제가 해결 되었습니까?

모든 의견을 환영합니다.

감사합니다,

.NET 프레임 워크 3.5

+0

서비스 계약에 문제가있는 것 같지 않지만 실제로 오류가 발생하지 않으면 알 수 없습니다. 오류를 생성하는 것은 서비스 참조 추가, WSDL 찾아보기 또는 메소드 호출입니다. –

+0

오류 메시지가 .svc 파일, col 1, row 1을 가리킨다 고하셨습니다. 질문에 .svc 파일의 내용을 포함시키지 않았습니다. 그 외에도, 표시된 코드가 올바르게 보입니다. – CodingWithSpike

답변

0

수동으로 ServiceClient 클래스를 구축하는 비주얼 스튜디오 2008 스탠다드 에디션 C#을? svcutil.exe 도구를 사용하여 프록시를 생성하고 생성 된 프록시 코드에서 직접 수정 작업을 수행하지 않는 것이 좋습니다. 당신이 당신의 클라이언트가 Alias1Alias2 등의 방법을 가지고있는 IServiceServiceClient 이런 식으로 뭔가를 보일 것입니다,

[ServiceContract] 
public interface IService 
{ 
    int Alias1(int param1, string param2); 

    int Alias2(int param1); 
} 

public partial class ServiceClient : ClientBase <IService>, IService 
{ 
    // other stuff 
    public int Alias1(int param1, string param2) 
    { 
     return base.Channel.Alias1(param1, param2); 
    } 

    public int Alias2(int param1) 
    { 
     return base.Channel.Alias2(param1); 
    } 
} 

주를 참조해야 도구 나 VS 서비스 참조를 추가를 통해 프록시를 생성 한 경우

아닙니다 MethodName. 서비스를 제공 할 적절한 프록시가 있는지 확인하십시오.

관련 문제