2017-03-07 25 views
2

我有那些ApiController的GET:用同一個動詞及不同航線Azure的API應用多個動作給人招搖錯誤

public class UsersController : ApiController 
{ 
    public IHttpActionResult GetUsers() 
    { 
     [...] 
    } 

    public IHttpActionResult GetUsers(guid ID) 
    { 
     [...] 
    } 

    [Route("api/Users/{CodeA}/{CodeB}")] 
    public IHttpActionResult GetUsers(string CodeA, string CodeB) 
    { 
     [...] 
    } 
} 

在webapiconfig.cs路由是標準之一:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}/", 
      defaults: new { id = RouteParameter.Optional} 
); 

試圖使用swaggerUI我得到一個500錯誤,並通過提琴手我得到:

不支持swagger 2.0:多個操作與路徑'api/utenti'和方法'GET'。請參閱配置設置 - \「ResolveConflictingActions \」爲潛在的解決方法」

如果我刪除最後一個GET方法招搖解析正確的API,我從許多來源,這個問題是通過指定不同的途徑來解決閱讀。 ,我嘗試了通過添加路線屬性的最後一個動作來實現這一目標。

可有人請點我走出了正確的方向?

預先感謝您。

+0

您是否嘗試將Route屬性添加到所有操作方法和控制器? – bwyn

+0

是的,但結果是一樣的。 – Kiske1

回答

1

的下面的代碼工作f或我:

[Route("users")] 
public class UsersController : ApiController 
{ 
    [Route("")] 
    public IHttpActionResult GetUsers() 
    { 
     string test = ""; 
     return Ok(test); 
    } 
    [Route("{id}")] 
    public IHttpActionResult GetUsers(Guid id) 
    { 
     string test = ""; 
     return Ok(test); 
    } 

    [Route("{CodeA}/{CodeB}")] 
    public IHttpActionResult GetUsers(string CodeA, string CodeB) 
    { 
     string test = ""; 
     return Ok(test); 
    } 
} 
+0

我試過這個,但是我得到和前面一樣的多重獲取錯誤 – Kiske1

+0

我按如下設置:一個新的空白web API項目,從nuget安裝swabbuffle swagger for web API,並創建一個具有上述代碼的控制器。我使用了visual studio 2013和web API 2.我還添加了一個index.html文件並將其設置爲開始頁面。如果你複製我的設置,你還會得到錯誤嗎? – bwyn

+0

我實際上使用的是VS2015,並且該項目是從「Azure Mobile App」模板開始創建的,這應該與帶有2個示例控制器的WebAPI項目幾乎相同。在VS2015中我找不到使用空的WebAPI模板的選項。我沒有安裝VS2013,所以我無法複製您的測試。 – Kiske1

相關問題