[英]How to ignore case sensitive properties name in WCF service call?
您好我想知道從客戶端調用WCF方法的可能性是什么會忽略區分大小寫的屬性名稱(在客戶端我使用JSON使用小寫屬性名稱,但在服務器端使用大寫)。 在這種情況下,WCF無法映射屬性。 是否可以使用一些WCF屬性等?
public interface IMyWCF
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
bool UpdateUser(User user);
}
[Serializable]
[DataContract]
public class User : ICloneable
{
[DataMember]
[JsonProperty(PropertyName = "login")]
[StringLength(40, ErrorMessage = "The Login value cannot exceed 40 characters. ")]
[DefaultValue("")]
public String Login { get; set; }
[DataMember]
[JsonProperty(PropertyName = "id")]
public int UserId { get; set; }
}
您可以使用[DataMember]
屬性的Name
屬性來映射屬性名稱:
[DataContract]
public class User : ICloneable
{
[DataMember(Name = "login")]
[JsonProperty(PropertyName = "login")]
[StringLength(40, ErrorMessage = "The Login value cannot exceed 40 characters. ")]
[DefaultValue("")]
public String Login { get; set; }
[DataMember(Name = "id")]
[JsonProperty(PropertyName = "id")]
public int UserId { get; set; }
}
更新以下注釋 :沒有任何旋鈕可用於在WCF使用的默認序列化程序上啟用不區分大小寫的反序列化。 但是,有一些選擇(沒有理想的選擇)。 您可以更改序列化程序以使用JSON.NET(可以這樣做,請參閱此博客文章 ,但不是很容易)並使用該序列化程序中的序列化程序設置來忽略大小寫。 我認為您還應該能夠添加其他屬性(可以是私有屬性,除非應用程序以部分信任方式運行),以映射其他受支持的案例; 類似於下面的代碼:
[DataContract]
public class User
{
[DataMember]
public String Login { get; set; }
[DataMember]
private String login { get { return this.Login; } set { this.Login = value; } }
[DataMember]
public int UserId { get; set; }
[DataMember]
private int id { get { return this.UserId; } set { this.UserId = value; } }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.