ServiceKnownTypeAttribute不会弹出在WSDL
-
19-09-2019 - |
题
我有一个服务界面:
[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);
}
正如你可以看到,我指定一种类型(型号。ArticleImage)在我与.
因此,建立WSDL这种服务应该引起ArticleImage出在WSDL。Unfortunarly这不会发生在所有。为什么?
ArticleImage有DataContract。当我返回ArticleImage在我的接口,然后WSDL不会拿起ArticleImage.
编辑:它甚至没有出现在服务基准的消耗项目!
这是因为大量的试验:
- 该模型我想添加一个皇宫的SQL模型。
- 当我增加一个正常的模式与ServiceKnownType它的工作。
- 当我用我的皇宫SQL实体在我的接口工作。
- 当我加上我的皇宫SQL实体通过ServiceKnownType它不会弹出来。
解决方案
有什么需要吗?那么你的服务获得的东西,可以 可能的 被一个 ArticleImage
?
重你的评论;当使用 [ServiceKnownType]
, 额外trype仍然是暴露在"墨西哥"(消费通过"svcutil"),但未通过的WSDL。您使用的是一个WCF的客户?它应该出现(我只是检查...它没有).在一般情况下,虽然,回返的含糊不清的数据网络服务不是一个好主意...子类型,肯定! Dictionary<string,ArticleImage>
甚至 Dictionary<string,SomeBaseType>
(与 [KnownType]
等等),没事!但 object
, HashTable
, 等等-不是个好主意(海事组织).
你可能也仅仅是返回的一个 列表 你的类型(List<ArticleImage>
),将工作在所有情况下(而且很容易WSDL等);和我们的客户使该词典在他们结束。
关于皇宫-对-SQL;对象为"墨西哥"需要被装饰着 [DataContract]
/ [DataMember]
.你可以这样做,在设计切换"化"的财产的申请.与此设置(化模式=单向的),它应的工作。说实话,不过,我认为你可以更好地关闭只是增加了一个虚拟的方法,让的类型,明确在API。
其他提示
唯一类型用作输入/输出参数的服务合同的操作都发表在WSDL。