2009-12-14 6 views
1

에 팝업하지 않습니다 당신이 내의 ServiceContract에 대해서 typeof (Models.ArticleImage)를 지정 볼 수 있듯이ServiceKnownTypeAttribute는 내가 서비스 인터페이스를 WSDL

[ServiceContract] 
[ServiceKnownType(typeof(Models.ArticleImage))] 
public interface IPhotoManagementService 
{ 
    [OperationContract] 
    bool Login(string username, string password); 

    [OperationContract] 
    bool IsLoggedIn(); 

    [OperationContract] 
    void UpdateImage(string articleID, string selectedImage); 
} 

.

따라서이 서비스의 WSDL을 구축하면 ArticleImage가 WSDL에 팝업됩니다. 불행히도 이것은 전혀 일어나지 않습니다. 왜 그런가요?

ArticleImage에는 DataContract가 있습니다. 그리고 내 인터페이스에서 ArticleImage를 반환하면 WSDL이 ArticleImage를 선택합니다.

편집 : 소비 프로젝트의 서비스 참조에서 팝업되지 않습니다.

  • 내가 추가하려고 해요 모델은 SQL 모델에 LINQ입니다 :

    은 많은 테스트의 결과입니다.
  • 정상적인 모델을 ServiceKnownType과 함께 추가하면 작동합니다.
  • 내 인터페이스에서 LINQ to SQL 엔터티를 사용할 때 작동합니다.
  • ServiceKnownType을 통해 SQL 엔티티에 LINQ를 추가하면 팝업되지 않습니다.
+0

(의견에 회신) –

답변

0

왜 필요합니까? 귀하의 서비스는 일 수있는 어떤 것을 노출합니까? ArticleImage일까요?

댓글 올리기; [ServiceKnownType]을 사용할 때 여분의 trype는 여전히 "mex"("svcutil"을 통해 소비 됨)에 노출되지만 WSDL에서는 노출되지 않습니다. WCF 클라이언트를 사용하고 있습니까? 나타나야합니다 (방금 확인했습니다 ... 그랬습니다). 그러나 일반적으로 웹 서비스에서 모호한 데이터를 반환하는 것은 좋은 생각이 아닙니다 ... 하위 유형입니다. Dictionary<string,ArticleImage> 또는 심지어 Dictionary<string,SomeBaseType> ([KnownType] 등)입니다. 하지만 object, HashTable 등 - 좋은 생각이 아닙니다 (IMO).

(List<ArticleImage>) 유형의 목록을 모든 시나리오에서 사용할 수 있으며 (WSDL 등) 쉽게 반환 할 수도 있습니다. 클라이언트가 사전에 사전을 만들도록하십시오.


LINQ-to-SQL과 관련하여; "mex"개체는 [DataContract]/[DataMember]으로 장식해야합니다. dbml에 대한 "serialization"속성을 토글하여 디자인에서이를 수행 할 수 있습니다. 이 집합 (직렬화 모드 = 단방향)을 사용하면 작동합니다. 솔직하게 말해서, 나는 당신이 API에 명시 적으로 타입을 만드는 가짜 메소드를 추가하는 것이 유리하다고 생각한다.

+0

ArticleImage의 HashTable을 반환한다고 가정 해 봅시다. – Snake

+0

가 업데이트됩니다. –

+0

Visual Studio를 사용하여 WCF 서비스 (서비스 참조 추가)를 사용하고 있습니다. 불행히도 전혀 팝업되지 않습니다. – Snake

1

서비스 계약 작업의 입력/출력 매개 변수로 사용되는 유형 만 WSDL에 게시됩니다.

+0

ServiceKnownType이 편리해야합니다. 그리고 그것은 작동하지 않습니다. – Snake

+0

아니요, 'ServiceKnownTypeAttribute'는 서비스 작업 중 하나가 노출하는 기본 유형의 가능한 파생 유형을 나타내는 데 사용됩니다. 이것은 당신의 경우가 아닙니다. 이 예제에서는'string'과'bool' 만 제공했습니다. –

관련 문제