新添加的MessageContract没有出现在服务引用元数据中

本文关键字:服务 引用 元数据 添加 MessageContract 新添加 | 更新日期: 2023-09-27 18:18:31

我有一个名为Document的MessageContract,它看起来像这样:

[MessageContract]
public class Document : IDisposable
{
    [MessageHeader(MustUnderstand = true)]
    public string FileName;
    [MessageHeader(MustUnderstand = true)]
    public bool IsUploaded = false;
    [MessageBodyMember(Order = 1)]
    public Stream FileByteStream;
    public void Dispose()
    {
        if (FileByteStream != null)
        {
            FileByteStream.Close();
            FileByteStream = null;
        }
    }
}

这在大多数情况下是可以的。它出现在智能感知中,我可以很好地实例化它。但是我需要添加一个新的合约,看起来像这样:

[MessageContract]
public class Dummy
{
    public int DummyID;
    public Image DummyImage;
    public int PageNumber;
}

看起来很简单。我建立了项目并更新了我的服务参考。但是那个类没有出现,我不能实例化它

你知道我哪里做错了吗?

新添加的MessageContract没有出现在服务引用元数据中

在这里,您没有声明DummyId, DummyImage和PageNumber将放在哪里。在消息正文或消息头中。关于消息契约用法的更多细节请参见此处。

我从这里得到了答案。

只有服务实际使用的类型才会反映在元数据中。

我没有使用数据合约的操作合约。我当时不需要,所以我没有做。但是,显然,除非您有一个使用它,否则不会为该DataContract生成元数据。