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