为什么这个ASP.NET控制器在部署到云时抛出404“Page not found”错误,但在本地工作正常?

yfwxisqw  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(108)

我有一个控制器定义如下:

[Route("api/MyAPI")]
public class MyController : Controller
{
    [HttpGet, HttpPost, Route("GetData")]
    public async Task<MyResponse> GetData()
    {
        MyResponse response = new MyResponse();
        int i = await myService.ExecuteAsync();
        response.IncomingUrl = this.Request.GetDisplayUrl();
        response.intVal = i;
        return response;
    }}

在服务结构群集中部署时,这会引发404错误,但在本地部署时可以正常工作。我在本地使用的URL是https://localhost:5400/api/MyAPI/GetData,部署到云时使用的URL是https://myservice.com/api/MyAPI/GetData
当我从类的顶部移除[Route(“API/MyAPI”)]块(第1行)并将其作为[HttpGet,HttpPost,Route(“api/MyAPI/GetData”)]包含在方法中(第4行)时,它在本地和云上都可以工作。
为什么会发生这种情况,我该如何解决?

ffx8fchx

ffx8fchx1#

我认为您正在为控制器查找RoutePrefix属性,而不是Route:

[RoutePrefix("api/MyAPI")]
public class MyController : Controller

希望这能解决问题

相关问题