我有一个服务界面:

[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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top