2014-09-19 9 views
0

내 솔루션에는 B2BobjectDLL, 웹 응용 프로그램 및 WCF 서비스 프로젝트로 작업 흐름이 있습니다. Workflow wcf와 웹 응용 프로그램 모두 B2Bobject를 참조했습니다. 그래서 워크 플로 WCF 참조를 내 웹 응용 프로그램에 추가 할 때 GetTossCardData 메서드가 제대로 표시됩니다.WCF로 워크 플로 추가 웹 사이트에 대한 서비스 참조 WCF 내의 비즈니스 개체도 불필요하게 노출됩니다.

아래의 Toss 클래스는 B2BobjectDLL입니다.

Toss toss = new Toss(); 
toss.GameID = 123; 
string tossCardData = string.empty; 
tossCardData = tossCardService.GetTossCardData(toss, "10"); 

문제는 GetTossCardData가 B2BobjectDLL 클래스 객체 토스을해야하지만, 방법은 우리가 입력 tossCardService 서비스의 토스 객체에 있다고 말하고있다.

개체 브라우저 창은 WF WCF 프로젝트가 동일한 B2BobjectDLL 클래스 개체를 해당 서비스 개체로 불필요하게 노출하고 있음을 알립니다.

오류 메시지가

Error 2 Argument 1: cannot convert from 'B2BBusinessObjects.Toss' to 'SignalRServerNew.ServiceReference2.Toss' 

어떻게 노출 된 개체를 제한 또는 왜 그것이 잘못 다른 클래스로 노출된다?

답변

0

서비스 참조를 추가하면 VS에서 svcutil이라는 도구를 실행하여 "워크 플로"에 의해 노출 된 WSDL을 사용하여 프록시 클래스를 생성합니다.이 서비스는 기본적으로 또 다른 WCF 서비스입니다.

서비스 참조를 추가 할 때 특정 어셈블리의 특정 유형을 "다시 사용"하도록 지정할 수 있습니다. 즉, 도구는 해당 유형에 대한 새 클래스를 생성해서는 안되며 대신에 다음에서 프록시 클래스를 만들어야합니다. 그러한 방식으로 재사용 된 유형을 기대할 수 있습니다.

귀하의 경우 참조 어셈블리 B2BobjectDLL에서 유형을 다시 사용하도록 VS에 알려야합니다.

당신이 제공 한 오류 메시지로 판단하면 clr 네임 스페이스 SignalRServerNew.ServiceReference2에 생성 된 프록시 클래스가 동일한 네임 스페이스를 가진 객체를 기대하기 때문에이 재사용이 발생하지 않는다고 결론 내릴 수 있습니다.

은 당신이해야 할 것은 :

  1. 현재 서비스 참조를 삭제하고 있는지 그것의 흔적이 남아 있지되어 있는지 확인합니다.

  2. 새 서비스 레퍼런스를 추가하고 어셈블리에서 유형을 다시 사용하도록 지정하십시오 (Visual Studio의 "서비스 참조 추가"창의 왼쪽 아래에 "고급"버튼이 있어야 함)

  3. (선택 사양) -.. 프록시 클래스가 생성 된 방법을 직접 확인하기 위해 생성 된 파일의 실제 엿볼

도움이되기를 바랍니다