我面临一个奇怪的问题。在我的Azure移动应用程序中,我添加了一个简单的vanilla webapi控制器,带有标准的http动词get,put等。现在在我的localhost上一切正常。但是当我将它部署到我的azurewebsite时。并使用Post man打电话。 PUT请求被映射到GET代码。我使用Postman,fiddler测试过。 我确信我错过了,但无法弄明白,检查路线,尝试了多种选择,但是无法弄明白。 DELETE和POST也是如此。下面是示例代码
[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 :(得分:0)
您正在通过WebAPI混合路由和通过移动应用程序进行路由,并且它们存在冲突。选一个。对于这个应用程序,我建议删除MobileAppController属性,然后使用WebAPI路由。
答案 1 :(得分:0)
确保您通过SSL提出请求,即您的网址应该从https开始。
当我使用Postman时,我的网址以“http”开头,任何POST / PUT / DELETE请求都会映射到GET。如果我将其更改为“https”,一切都按预期工作。