簡體   English   中英

從 WCF 休息服務收到 400 錯誤請求 - XML 格式的請求

[英]400 Bad Request Received from WCF Rest Service - XML formatted request

我在使用本地托管的 Web 服務時遇到了問題。

這是 Web 服務接受的參數:

    [DataContract(Namespace = "http://com.rest")]
    [XmlRootAttribute(ElementName = "PlaceCutEventData", Namespace = "http://com.rest", IsNullable = false)]
    public class PlaceCutEventData
    {
        [DataMember(IsRequired = true)]
        public string CutName { get; set; }
        [DataMember(IsRequired = true)]
        public string CutID { get; set; }
        [DataMember(IsRequired = true)]
        public string StationName { get; set; }
        [DataMember(IsRequired = true)]
        public string LineID { get; set; }
        [DataMember]
        public double CutLength { get; set; }
        [DataMember]
        public string Comment { get; set; }
        [DataMember]
        public string GeoName { get; set; }
        [DataMember]
        public bool IsClosed { get; set; }
        [DataMember(IsRequired = true)]
        public string Phases { get; set; }

        public PlaceCutEventData()
        {
            SetDefaults();
        }

        [OnDeserializing]
        private void OnDeserializing(StreamingContext context)
        {
            SetDefaults();
        }

        private void SetDefaults()
        {
            CutLength = 0.50;
            IsClosed = true;
            GeoName = "DETAIL";
        }
    }

下面是界面的樣子(已經實現了):

        [WebInvoke(UriTemplate = "/PlaceCut", Method = "POST")]
        [OperationContract]
        [Description("Request to place a cut")]
        Task<ServerResponse> PlaceCut(PlaceCutEventData data);

我能夠使用JSON格式的請求向 Web 服務發送請求,並且它實際處理它。 但是,當我切換到 XML 格式時,它總是會返回 400 Bad Request:

這是 XML:

<PlaceCutEventData xmlns="http://com.rest">
    <CutName>testing</CutName>
    <CutID>13213</CutID>
    <StationName>Test</StationName>
    <LineID>TestID</LineID>
    <CutLength>0.60</CutLength>
    <Comment></Comment>
    <GeoName>TestGeoName</GeoName>
    <IsClosed>true</IsClosed>
    <Phases>N</Phases>
</PlaceCutEventData>

這是 json 版本,但我的 Web 服務實際上接受了這個請求:

{
    "CutName": "testing",
    "CutID": "13213",
    "StationName": "Test",
    "LineID": "TestID",
    "GeoName": "TestName",
    "Phases": "N",
    "IsClosed": true,
    "CutLength": 0.60,
    "Comment": ""
}

有人可以解釋為什么 XML 格式不起作用嗎?

非常感謝。

XML 格式似乎沒有問題。 這是我的請求。 在此處輸入圖片說明
我將數據類型從 JSON 更改為 XML,以便添加以下 HTTP 標頭。

內容類型:應用程序/xml

這是我對函數和數據契約的定義。

        [OperationContract]
        [WebInvoke]
        string PlaceCut(PlaceCutEventData data);
    }

    [DataContract(Namespace = "CustomDataContract")]
    public class PlaceCutEventData
    {
        [DataMember(IsRequired = true)]
        public string CutName { get; set; }
        [DataMember(IsRequired = true)]
        public string CutID { get; set; }
        [DataMember(IsRequired = true)]
        public string StationName { get; set; }
        [DataMember(IsRequired = true)]
        public string LineID { get; set; }
        [DataMember]
        public double CutLength { get; set; }
        [DataMember]
        public string Comment { get; set; }
        [DataMember]
        public string GeoName { get; set; }
        [DataMember]
        public bool IsClosed { get; set; }
        [DataMember(IsRequired = true)]
        public string Phases { get; set; }
}

如果問題仍然存在,請隨時告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM