2017-03-22 108 views
0

我正面臨一個奇怪的問題。在我的Azure移動應用程序中,我添加了一個普通的香草webapi控制器,帶有標準http動詞get,put等。現在我的localhost中一切正常。但是當我將其部署到我的天藍地網站時。並使用郵政人員打電話。 PUT請求被映射到GET代碼。我使用郵差,提琴手測試。 我相信我缺少某事,但無法弄清楚,檢查了路線,嘗試了多種選擇,但無法弄清楚。 DELETE和POST也是如此。下面是示例代碼enter image description herePUT請求在部署時映射到GET請求

[MobileAppController] 
public class TestController : BaseController 
{ 
    // GET: api/Test 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    // GET: api/Test/5 
    public string Get(int id) 
    { 
     return "value"; 
    } 

    // POST: api/Test 
    [Route("api/test")] 
    public async Task<string> Post([FromBody]string value) 
    { 
     await Task.Delay(100); 
     return "post: " + value; 
    } 

    // PUT: api/Test/5 
    [Route("api/test/{id}")] 
    public async Task<string> Put(int id, [FromBody]string value) 
    { 
     await Task.Delay(100); 
     return "put: " + value; 
    } 

    // DELETE: api/Test/5 
    [Route("api/test/{id}")] 
    public async Task<string> Delete(int id) 
    { 
     await Task.Delay(100); 
     return "delete: " + id; 
    } 
+0

據我所知,你的ApiController沒有什麼問題,你是否試圖用你的動作指定HTTP方法(** AcceptVerbs **,** HttpGet **,** HttpPut **等)這個問題?另外,截圖中的端點和響應與您的ApiController代碼沒有關係,您是否可以更新您的問題? –

回答

0

您通過移動應用程序通過的WebAPI和路由的混合路由,它們是相互矛盾的。選一個。對於這個應用程序,我建議刪除MobileAppController屬性,然後使用WebAPI路由。

+0

謝謝阿德里安,但問題仍然相同 – Anu

+2

聖潔的廢話!我發現這個問題,當我使用Postman的時候,我的url是「http」,任何POST/PUT/DELETE請求都被映射到GET。如果我將其更改爲「https」,則所有內容都按預期工作。 – Anu

0

確保您通過SSL發出請求,即您的網址應該從https開始。

當我使用郵遞員時,我的網址以「http」開頭,任何POST/PUT/DELETE請求都被映射到GET。如果我將其更改爲「https」,則所有內容都按預期工作。

+0

根據你的'TestController.cs',使用https或http的請求可以通過Postman按我的預期工作。 –

+0

它在我的本地主機上工作,但沒有一次我部署到天藍色的網站 – Anu