在具有Api版本控制的Asp.Net Core 3.1中,CreatedAtAction方法用于创建一个带有201状态码和Location标头的响应,表示资源成功创建。该方法的第一个参数是控制器中的操作方法名称,第二个参数是操作方法的参数值,第三个参数是创建的资源对象。然而,当调用CreatedAtAction方法时,如果提供的参数值与路由模板中的参数不匹配,就会引发“没有与提供的值匹配的路由”错误。
要解决这个问题,你可以检查以下几点:
- 确保控制器中的路由模板与CreatedAtAction方法中的操作方法名称匹配。例如,如果控制器中的路由模板是
[Route("api/[controller]")]
,那么在CreatedAtAction方法中应该提供正确的操作方法名称。 - 确保CreatedAtAction方法中的操作方法参数值与路由模板中的参数名称匹配。例如,如果路由模板是
[Route("api/[controller]/{id}")]
,那么在CreatedAtAction方法中应该提供名称为"id"的参数值。 - 确保CreatedAtAction方法中的操作方法参数值的类型与路由模板中的参数类型匹配。如果参数类型不匹配,可以尝试进行类型转换或使用合适的参数类型。
- 确保在控制器中正确配置了Api版本控制。这可能涉及到使用
[ApiVersion]
属性和[ApiVersioning]
特性来设置控制器的版本信息。
推荐的腾讯云相关产品:
- 云服务器(CVM):提供可扩展的虚拟服务器,适用于各种应用场景。链接地址:https://cloud.tencent.com/product/cvm
- 云数据库SQL Server版:提供托管的SQL Server数据库服务,具有高可用性和可扩展性。链接地址:https://cloud.tencent.com/product/cdb_sqlserver
- Serverless云函数(SCF):无需管理服务器即可运行代码的事件驱动计算服务,支持多种语言。链接地址:https://cloud.tencent.com/product/scf