【发布时间】:2014-09-02 10:53:21
【问题描述】:
我正在使用一个 REST 客户端,我已经用它在我的数据库中发布了其他复杂的对象。
我不能发布太多代码,因为它与工作相关,但这是我试图从我的休息客户端发送到 Web API 的内容:
{"BinID":"PBN0012","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-07-11T17:51:49.670028+00:00","ModifiedByUID":"00000000-0000-0000-0000-000000000000","BatchBins":[],"BinsInUses":[]}
也就是JsonConvert序列化后的对象。
我正在使用 HttpWebResponse(并在 Xamarin“路径中的非法字符”上收到 HTTP 500 内部服务器错误和 System.ArgumentException。
即使我尝试直接通过 SOAP UI 发布,我也会收到以下消息:
{
"$id": "1",
"Message": "An error has occurred."
}
这是我在浏览器中输入“(IP 地址....)/Api/Bins/GetBins 时得到的:
[{"$id":"1","BatchBins":[],"BinsInUses":[{"$id":"2","Bin":{"$ref":"1"},"BinID":"PBN0001","EntrySequence":1}],"BinID":"PBN0001","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"3","BatchBins":[],"BinsInUses":[{"$id":"4","Bin":{"$ref":"3"},"BinID":"PBN0002","EntrySequence":2}],"BinID":"PBN0002","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"5","BatchBins":[],"BinsInUses":[{"$id":"6","Bin":{"$ref":"5"},"BinID":"PBN0003","EntrySequence":3}],"BinID":"PBN0003","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"7","BatchBins":[],"BinsInUses":[{"$id":"8","Bin":{"$ref":"7"},"BinID":"PBN0004","EntrySequence":4}],"BinID":"PBN0004","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"9","BatchBins":[],"BinsInUses":[],"BinID":"PBN0005","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"10","BatchBins":[],"BinsInUses":[],"BinID":"PBN0006","BinType":"Dryer","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"11","BatchBins":[],"BinsInUses":[],"BinID":"PBN0007","BinType":"Dryer","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"12","BatchBins":[],"BinsInUses":[],"BinID":"PBN0008","BinType":"Dryer","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"13","BatchBins":[],"BinsInUses":[],"BinID":"PBN0009","BinType":"Dryer","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"14","BatchBins":[],"BinsInUses":[],"BinID":"PBN0010","BinType":"Dryer","IsDeleted":false,"ModifiedDateTime":"2014-06-02T00:00:00","ModifiedByUID":"b6c1b64f-874b-4180-949a-97c77cc4194c"},{"$id":"15","BatchBins":[],"BinsInUses":[],"BinID":"PBN0011","BinType":"Wash","IsDeleted":false,"ModifiedDateTime":"2014-07-03T15:34:11.67","ModifiedByUID":"9f05ab31-2521-4a7e-9258-b7092aae5058"}]
Bin 类包括:
public partial class Bin
{
public Bin()
{
this.BatchBins = new HashSet<BatchBin>();
this.BinsInUses = new HashSet<BinsInUse>();
}
public string BinID { get; set; }
public string BinType { get; set; }
public bool IsDeleted { get; set; }
public System.DateTime ModifiedDateTime { get; set; }
public System.Guid ModifiedByUID { get; set; }
public virtual ICollection<BatchBin> BatchBins { get; set; }
public virtual ICollection<BinsInUse> BinsInUses { get; set; }
}
数据库中“Bin”的表有以下列:
BinID (PK, nvarchar(100),not null)
BinType (nvarchar(5), not null)
IsDeleted (bit, not null)
ModifiedDateTime (datetime,not null)
ModifiedByUID (uniqueidentifier, not null)
考虑到我的其他对象可以正常通过,我知道我为每一个都使用了正确的类型。关于如何获取 json 字符串发布的任何建议??
【问题讨论】:
-
我也曾尝试从当时删除“+00:00”或“.670028+00:00”,并尝试移动““BatchBins”:[],“BinsInUses” :[] " 到字符串的前面,但没有任何区别。
-
我已经尝试在发布之前添加到“BinsInUses”和“BatchBins”,但它仍然不起作用(并且做一些不属于原始数据库对象的事情让我搞砸了无论如何在这个数据库中发布另一种类型的对象)
标签: json database api http web