1

オブジェクトをパラメーターとして受け入れることができる Web API を作成しようとしています...以下に投稿された簡単な例から始めましたが、Internal Server Error が発生します

私のAJAX:

var order = {
    "id": 1012345,
    "carrier": "works",
    "created_at": "works",
    "description": "works",
    "etd": "works",
    "invoice_id": 12,
    "origin_id": 13,
    "po_number": "101",
    "shipped_on": "works",
    "status": "works",
    "updated_at": "works"
};

$.ajax({
    url: "http://localhost:3495/api/NTOrder/",
    type: "GET",
    data: { inputOrder: order },
    beforeSend: function(xhr){
        xhr.setRequestHeader('username', 'user4');
        xhr.setRequestHeader('password', 'secret');
    },
    success: function(data) { 
        alert('Success!' + JSON.stringify(data)); $('.result').html(data); 
    }
});

Chrome では、URL にアクセスしようとすると 500 Internal Server Error が表示されます。

http://localhost:3495/api/NTOrder/?inputOrder%5Bid%5D=1012345&inputOrder%5Bcarrier%5D=works&inputOrder%5Bcreated_at%5D=works&inputOrder%5Bdescription%5D=works&inputOrder%5Betd%5D=works&inputOrder%5Binvoice_id%5D=12&inputOrder%5Borigin_id%5D=13&inputOrder%5Bpo_number%5D=101&inputOrder%5Bshipped_on%5D=works&inputOrder%5Bstatus%5D=works&inputOrder%5Bupdated_at%5D=works

URL 文字列が間違って作成されましたか?

MVC 側の私のコードは非常に単純です。

public IEnumerable<NTOrder> GetOrders(NTOrder inputOrder)
{
    List<NTOrder> NTOrderList = new List<NTOrder>();
    NTOrderList.Add(inputOrder);
    return NTOrderList;
}

クラス NTOrder は非常に単純で、元の AJAX で使用される属性のみが含まれています。

4

1 に答える 1

3

GET ではなく POST に切り替えても問題ない場合は、この方法で行うことができます。運が良くなるかもしれません。

$.ajax({
    url: "http://localhost:3495/api/NTOrder/",
    type: "POST",
    data: JSON.stringify({ inputOrder: order }),
    dataType: "json",
    beforeSend: function(xhr){
        xhr.setRequestHeader('username', 'user4');
        xhr.setRequestHeader('password', 'secret');
    },
    success: function(data) { 
        alert('Success!' + JSON.stringify(data)); $('.result').html(data); 
    }
});
于 2012-09-25T16:23:57.010 に答える