C# RestClient删除操作Json错误

C# RestClient删除操作Json错误,c#,asp.net,C#,Asp.net,我试图使用RestClient执行删除操作,但无法在请求体中包含Json对象。这是我的代码: var client = new RestClient(WebService); var request = new RestRequest(string.Format("/api/v1/{0}/{1}", controller, action), method); request.AddHeader("Accept", ContentTypeAp

我试图使用RestClient执行删除操作,但无法在请求体中包含Json对象。这是我的代码:

        var client = new RestClient(WebService);
        var request = new RestRequest(string.Format("/api/v1/{0}/{1}", controller,    action), method);

        request.AddHeader("Accept", ContentTypeApplicationJson);
        request.RequestFormat = DataFormat.Json;            
        request.AddHeader("Content-Type", ContentTypeApplicationJson);
        request.AddCookie(".ASPXAUTH", AspxAuth);
        request.AddBody(jsonObjectRequest);

        var response = client.Execute(request);

        var jsonResponse = string.Empty;
        using (var stream = new MemoryStream(response.RawBytes))
        {
            stream.Position = 0;
            var sr = new StreamReader(stream);
            jsonResponse = sr.ReadToEnd();
        }

        var jObjectDeserialize = GetJObjectDeserialize(jsonResponse);
在我的示例中,ContentTypeApplicationJson=application/json和jsonObject是一个包含以下内容的对象:

{ “BasketItemReferenceGuid”:“示例字符串1”, “BasketReferenceGuid”:“示例字符串2” }

这是我在《小提琴手》中的要求

DELETE http://local.webapi.com/api/v1/BasketV3Products/ HTTP/1.1 Accept: application/json Content-Type: application/json User-Agent: RestSharp 102.4.0.0 Host: local.webapi.com Cookie: .ASPXAUTH=E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EE68FE719E094EF1ACDD619B4D792341988F80CB67E8B5037D8ACF9FBABB74DE1E75A530AB432D85722D647771C6C576F8E810257CE9E60117DCEEFBD949EAD9E64C84898BDC5D691F957CE6266CF5652C693B86ED1D55907AAC5DC68 Content-Length: 0 Accept-Encoding: gzip, deflate 删除http://local.webapi.com/api/v1/BasketV3Products/ HTTP/1.1 接受:application/json 内容类型:application/json 用户代理:RestSharp 102.4.0.0 主持人:local.webapi.com Cookie:.ASPXAUTH=E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EEE68FE719E094EF1ACD619B4D792348F80CB67E8B5037D8ACF9FBab74DE75A530AB432D85722D64777C676C576E810257CE9E60117DCEEFBD949EAD9E64C4898D697CE625656865CF957AD957C5907ED68 内容长度:0 接受编码:gzip,deflate
谢谢

看起来,即使HTTP规范没有明确规定删除不应该有正文,许多web服务器(或web代理)也会忽略它

从语义上讲,当使用
DELETE
时,uri应该标识要
DELETE
的资源。这有点像使用
GET
。同样,对于
GET
,规范并不禁止主体,但实际上并没有多少web服务器(或web代理)支持
GET
请求的主体

有关详细信息,请参阅


因此,实现
DELETE
的更好方法是将
basketitemferenceguid
BasketReferenceGuid
放在uri模板中。

看起来,即使HTTP规范没有明确说明
DELETE
不应该有主体,许多web服务器(或web代理)也会忽略它

从语义上讲,当使用
DELETE
时,uri应该标识要
DELETE
的资源。这有点像使用
GET
。同样,对于
GET
,规范并不禁止主体,但实际上并没有多少web服务器(或web代理)支持
GET
请求的主体

有关详细信息,请参阅


因此,实现
DELETE
的更好方法是将
basketitemferenceguid
BasketReferenceGuid
放在uri模板中。

您好,Davin。谢谢你的回答。最后,我用HttpWebRequest解决了请求中的问题。通过这种方式,您可以在DELETE请求体中包含您想要的任何内容。谢谢,大卫。谢谢你的回答。最后,我用HttpWebRequest解决了请求中的问题。通过这种方式,您可以在DELETE请求体中包含您想要的任何内容。谢谢