405错误-UnsupportedApiVersion:API版本1.0不支持POST请求求助
问题分析
405错误的核心原因是前端请求的URL与后端实际支持的有效端点不匹配,同时结合错误提示里的UnsupportedApiVersion,还存在API版本前缀缺失、路由参数名不统一的问题。你在Postman中测试的有效端点是/api/v1/sites/{id}/syncWithDataFactory/{activate},但当前代码里的前后端路由都和这个正确路径不一致。
修复步骤
1. 修正前端请求路径(site.service.ts)
将路由模板修改为和Postman测试通过的端点完全一致的结构,补充API版本前缀:
private routes = { // 修正路径结构,添加/api/v1前缀,对齐有效端点 IsDFSynchronized: '/api/v1/sites/{:siteId}/syncWithDataFactory/{:isDFSynchronized}', }; datafactoryIsSynchronized(siteId: number, isSyncValue: boolean): ng.IPromise<boolean> { const url = this.routes.IsDFSynchronized .replace('{:siteId}', siteId.toString()) .replace('{:isDFSynchronized}', isSyncValue.toString()); return this.restService.post(url, null).then((response: any) => { console.log('THE RESPONSE IS', response.data); return response.data; }).catch((response: any) => { return this.$q.reject(response); }); }
2. 修正后端路由与参数绑定(SiteController.cs)
- 补充API版本前缀到路由中
- 对齐路径结构为
sites/{siteId}/syncWithDataFactory/{isSynchronized} - 确保路由参数名与方法参数名统一(原代码路由参数是
isDFSynchronized,方法参数是isSynchronized,存在不匹配) - 若后端启用了API版本控制,需添加
[ApiVersion("1.0")]特性
[ApiVersion("1.0")] // 启用API版本控制时必须添加 [AcceptVerbs("POST")] // 修正路由路径,对齐有效端点,统一参数名 [Route("api/v1/sites/{siteId}/syncWithDataFactory/{isSynchronized}")] public bool UpdateDataFactorySync([FromUri] int siteId, [FromUri] bool isSynchronized) { var connectedUser = this.permissionService.GetConnectedUser(); this.permissionService.CheckUserPermission(connectedUser, PermissionConstant.EditDataFactorySync); bool result = this.siteService.UpdateDataFactorySync(connectedUser.CurrentEnvironment, siteId, isSynchronized); if (result) { this.applicationDataAccess.LogAction(connectedUser.CurrentEnvironment, connectedUser.Email, LogActionConstants.Action.EditDataFactorySync, string.Format(LogActionConstants.Message.EditDataFactorySync, siteId, isSynchronized)); } return result; }
3. 验证核心匹配项
- 确认前端调用的
POST方法与后端[AcceptVerbs("POST")]注解一致 - 检查后端是否正确配置了API版本控制的路由规则(比如
ApiVersioning中间件),确保v1版本的端点能被正确识别
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

