2010-07-27 2 views
4

별도의 라이브러리에서 인터페이스를 구현하는 2 개의 WCF 서비스가 있습니다. 인터페이스의 메서드는 WebGet 또는 WebInvoke 특성으로 표시되지 않습니다. 하지만 하나의 서비스가 POST 요청을 처리하는 반면 다른 서비스는 GET 요청을 처리합니다. 그래서 이런 식으로 :2 개의 WCF 서비스, 1 개의 공통 인터페이스, 여러 개의 두통

서비스 1 : 모든 POST 요청을 처리합니다. 요청은 JSON에, 응답은 JSON에 있습니다. 인터페이스에서 상속되고 구현 된 모든 메소드는 WebInvoke로 표시됩니다.

서비스 2 : 모든 GET 요청을 처리합니다. 요청은 JSON 형식이며 응답은 JSONP입니다. 인터페이스에서 상속되고 구현 된 모든 메소드는 WebGet으로 표시됩니다.

지금까지는 그렇게 좋았습니다. 이제이 놈들을 해고 시켜라. 이것은 내가 오류입니다 : 실제 인터페이스가 이미 속성 중 하나 또는 둘 모두 표시된 경우

Operation 'SomeMethod' in contract 'IServiceContract' has both WebGetAttribute and WebInvokeAttribute; only one can be present. 

흠,이 감각을 만들 것,하지만 밤은.

double hmmmmmm :이 설정은 VS를 통해 기본 WCF 서비스를 만들고 두 번째 서비스를 추가하고 모든 메서드 구현을 마크 업하면 완벽하게 작동합니다.

트리플 hmmmmmmm : JSONP 서비스에서 WebGet 특성 만 제거하면 (JSON 서비스에 WebInvoke가 남음) 작동합니다. 내 JSON 서비스에서 WebInvoke 특성을 제거하는 경우에도 마찬가지입니다.

편집 : 또 다른 이상한 점은 일반 JSON/POST 서비스가 작동하는 동안 서비스 중 하나만이이 오류 (JSONP/GET 서비스)를 발생시킵니다.

+0

인터페이스에 대한 전체 코드를 게시 할 수 있습니까? 그리고 아마 당신의 구현? – jrista

+0

Unfortunatley 나는 그것을 알아 냈다 .... 예, 거의 반나절 동안 코드를 살펴본 결과, 라이브러리에 대한 참조 (인터페이스가 포함되어 있음)를 제거한 다음 다시 추가하면 모든 것이 작동한다는 것을 알았습니다. –

+2

+1 제목 :-) –

답변

1

계약 (인터페이스)이 포함 된 프로젝트에 대한 참조를 제거하고 다시 추가해 보았습니까? 또는 무엇인가가 만료 된 경우를 대비하여 "Clean Solution"을 실행 해보십시오.

사용중인 프로젝트 참조라고 가정합니다.

관련 문제