2017-04-20 32 views
0

所以我有一箇舊的API調用與此簽名多的行動中發現符合要求的API調用

public dynamic Add(String organizationId, String locationId, String orderType, String massTypeId, double amount, DateTime from, DateTime to, double distance, Driving driving) 

現在我已經改變喜歡這個

public dynamic Add(String organizationId, String locationId, String orderType, String massTypeId, double amount, DateTime from, DateTime to, double distance, bool driving) 

唯一的區別是在於最後一個參數的類型。現在,我必須讓我的老API調用,直到我的應用程序部署。但是,如果在本地嘗試它,我得到這個錯誤

多個動作中發現符合要求

在我的數據從客戶端的最後一個參數看起來像這樣

driving : true 

我發送數據作爲JSON。

有沒有人知道它爲什麼會發生?

+0

您是否更改了簽名或者您是否僅通過稍微更改的簽名添加了新方法? – MilConDoin

+0

我添加了一個簽名稍微改變的新簽名。新的將最後一個參數作爲布爾值。但我仍然必須擁有較舊的應用程序,直到我的應用程序啓動並運行。或者舊版本將無法與新的API交談。 – mohsinali1317

回答

0

發現與請求匹配的多個操作, 當您遷移到新的API時,最好使用請求對象。 對於使用這兩個API現在,你可以指定路由名稱作爲裝飾,以具體到你的新航線

[Route("MyNewApiAdd")] 
public dynamic Add([FromBody]ReqObject req); 

,並確定新的

public class ReqObject 
    { 
    String organizationId{get;set;} 
    String locationId{get;set;} 
    String orderType{get;set;} 
    String massTypeId{get;set;} 
    double amount{get;set;} 
    DateTime from{get;set;} 
    DateTime to{get;set;} 
    double distance{get;set;} 
    bool driving{get;set;} 
    } 
0

這是爲Web API?如果沒有,就忽略。如果是這樣,我認爲你在做什麼是不可能的。你所做的是重載不支持的API方法,而不是像this那樣。

見樣本:

[ActionName("GetById")] 
public Foo Get(int id) { //whatever } 

[ActionName("GetByString")] 
public Foo Get(string id) { //whatever } 

[ActionName("GetByGUID")] 
public Foo Get(Guid id) { //whatever } 


謝謝!
useAIble

+1

你爲什麼提到useAlXX? – user2190035

相關問題