ASP.NET MVC API 操作返回 404,所有其他操作都有效

Posted

技术标签:

【中文标题】ASP.NET MVC API 操作返回 404,所有其他操作都有效【英文标题】:ASP.NET MVC API Action Returning 404, All Other Actions Work 【发布时间】:2021-07-21 04:52:18 【问题描述】:

我有一个调用 ASP.NET WEB API 的 Angular 应用程序。我在其中一个 api 控制器上添加了一个方法,它返回 404。可以毫无问题地调用同一控制器上的所有其他方法。该应用程序在 IIS 上本地托管。

API 操作:

[ActionName("GetOrgChart")]
[ResponseType(typeof(List<Object>))]
[HttpPost]
public IHttpActionResult GetOrgChart(string id)

    EmployeeMasterPTOCoordinator emPTOCnator = new EmployeeMasterPTOCoordinator();
    List<Object> orgChartData = emPTOCnator.GetOrgChart()
    return Ok<List<Object>>(orgChartData);

来自 Angular 应用程序的 HTTP Post 调用:

function GetOrgChart(id) 
   var deferred = $q.defer();
   $http(
        method: 'POST', cache: false,
        url: 'localhost:81/api/Employee/EmployeeMaterPTO/GetOrgChart',
        data: id
    ).success(function(data)
        deffered.resolve(data);
    ).error(function(data)
        deffered.resolve(data);
    )
    return deffered.promise;

关于可能导致此问题的任何想法?我尝试从 IIS 的应用程序池中删除 api 并重新添加它。我查看了整个堆栈溢出,但无法找到解决方案

【问题讨论】:

【参考方案1】:

删除 [HttpPost] 并将 [ActionName] 替换为此

[Route("~/api/Employee/EmployeeMaterPTO/GetOrgChart/id?")]
public IHttpActionResult GetOrgChart(string id)

添加到您的 route.config 的顶部

 routes.MapMvcAttributeRoutes();

并从请求中删除“ data: id ”

method: 'GET',
        url: 'http://localhost:81/api/Employee/EmployeeMaterPTO/GetOrgChart/'+id
     

【讨论】:

不幸的是,这对我不起作用。我有一种感觉是因为当我更改 c# 代码时 dll 文件没有更新。 是http,因为我在本地开发。完整的网址是:'localhost:81/api/Employee/EmployeeMaterPTO/GetOrgChart' @JacobNarayan 是的,我相信您的任何 API 路由更改都需要重新构建才能发布以供您的客户使用。

以上是关于ASP.NET MVC API 操作返回 404,所有其他操作都有效的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC - Elmah 不工作并为 elmah.axd 返回 404 页面

从 ASP.NET MVC 操作发送 HTTP 404 响应的正确方法是啥?

ASP.NET MVC 4,Web API - 404 未找到

ASP.Net MVC 2 RC2:当所有可选参数为空时,自定义路由返回 404

ASP.NET Core Web API HTTP POST 在 Azure 中返回 404

ASP.NET MVC:如何在返回状态码 404 时提供内容? [复制]