簡體   English   中英

調用.NET Web API GET方法時參數為null

[英]Argument is null in call to .NET Web API GET method

我有兩個類似的Web API控制器,一個工作,另一個不工作。 找不到為什么壞了的不工作。 發生的情況是輸入參數的所有字段均為空。 這是控制器方法簽名:

public IEnumerable<Product> GetProducts([FromUri] StateQuery query)

參數類型:

public class StateQuery
{
    public State state;
    public string username;
    public string password;
}

路由:

config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
            name: "Default",
            routeTemplate: "api/{controller}/{action}"
);

調用端點:

var uri = 'api/product/';
var query = {
                username: $("#user").val(),
                password: $("#password").val(),
                state: { "name": $("#state").val(), "Counties": [{ "Name": $("#county").val() }] }
            };


$.getJSON(uri + 'getProducts', query)
              .done(function (data) {
                  $('#product').text(data);
                  console.log(data);
              })
              .fail(function (jqXHR, textStatus, err) {
                  $('#product').text('Error: ' + err);
              });

這是一個示例請求:

http://localhost:47503/api/product/getProducts?username=auser&password=apassword&state%5Bname%5D=CO&state%5BCounties%5D%5B0%5D%5BName%5D=Boulder

我嘗試了屬性路由,嘗試從瀏覽器地址欄調用,嘗試將輸入簡化為僅用戶名和密碼,沒有任何更改。 query所有字段始終為空。 我還嘗試將其更改為返回IHttpActionResult ,這是它與工作控制器之間的主要區別(當然不是它的作用),但這沒有效果。 該方法被調用,因此路由正常工作,但是參數綁定存在一些問題,而我只是沒有看到。

是否有人看到問題或只是一個方向? 我整個上午都在閱讀教程和SO問題,而我所看到的一切都表明我處在正確的軌道上。 也許我錯過了一些小東西,因為我盯着它太久了。

默認情況下,ASP.NET Web API使用的Json.NET在屬性而不是字段上起作用。 您應該將它們轉換為using屬性。

public class StateQuery
{
    public State state { get; set; }
    public string username { get; set; }
    public string password { get; set; }
}

暫無
暫無

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

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