WCF Web 服务中的 C# bool 变量始终为 false/Datetime 变量始终为 DateTime.Min

标签 c# asp.net web-services wcf boolean

我对 WCF Web 服务还很陌生,直到现在我使用 .asmx Web 服务,并且从未遇到过类似的问题。

我有一个附件类,我用它来保存网站上的一些附件。

[DataContract]
public class Attachement
{
    private string _Name;
    [Column]
    [DataMember(Order = 1)]
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }
    .
    .
    .
    private bool _IsNew;
    [DataMember(Order = 6)]
    public bool IsNew
    {
        get { return _IsNew; }
        set { _IsNew = value; }
    }...

问题是,当我向 WCF 服务发出一些请求时,IsNew 字段始终为 False,即使我确定在设置为 True 的请求中发送它。我在使用 DateTime 字段时也遇到同样的问题 - 我用值 <> DateTime.Min 发送它,但在 Web 服务中我始终让该字段等于 DateTime.Min。

我可以使用字符串而不是 bool 和 DateTime 来解决这个问题,但是我无法解析这种类型的变量,这真的很烦人。

我做错了什么?

最佳答案

信息来自here .

在 WCF 中,您必须非常明确,您的参数将在方法签名中插入一个自动生成的标志参数(在生成的代理中查看它们),例如如果您的字段是 EditDate,那么自动生成的属性将为 EditDateSpecified,请参见下文。

[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public System.DateTime EditDate {
    get {
        return this.editDateField;
    }
    set {
        this.editDateField = value;
        this.RaisePropertyChanged("EditDate");
    }
}

[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool EditDateSpecified {
    get {
        return this.editDateFieldSpecified;
    }
    set {
        this.editDateFieldSpecified = value;
        this.RaisePropertyChanged("EditDateSpecified");
    }
}

WCF 要求您设置此自动生成标志以指定值位于自动生成标志所属的属性中。

有多种方法可以设置此标志,但是如果该字段是必需的,则可以通过使用 [DataMember(IsRequired=true)] 属性来停止生成“blahblahSpecified”标志,例如

[DataMember(IsRequired=true)]
public DateTime EditDate { get; set; }

关于WCF Web 服务中的 C# bool 变量始终为 false/Datetime 变量始终为 DateTime.Min,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32840506/

相关文章:

c# - 如何暂时排除属性(property)被保存到 RavenDb?

c# - TransactionScope 是否适用于不同的 Context 对象

asp.net - 在 WebMatrix cshtml 页面中使用 ASP.NET 控件

java - 更改 SOAP xml 响应中的标记名称(类中的字段和响应中的标记必须不同)

c# - 将 BigIntegers 相除以返回 double

c# - 导出选定的行和列 datagridview

c# - 在 C# 中使用 TimeSpans 计算平均时间

web-services - 访问 Web 服务时出现 Http 502 Bad Gateway 错误

ios - JSON 文本未以数组或对象开头,并且未设置允许片段的选项

c# - 你如何解决类型和对象之间常见的命名冲突?