在ASP.NET Core 2.2中,如果在复杂路由下使用CreatedAtRoute方法时出现问题,可以尝试以下解决方法:
[HttpPost]
[Route("api/[controller]")]
public IActionResult Create([FromBody] MyModel model)
{
// 保存模型到数据库
// ...
// 返回创建的模型,并使用CreatedAtRoute方法指定路由名称和路由值
return CreatedAtRoute("GetById", new { id = model.Id }, model);
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// 添加路由配置
services.AddRouting(options =>
{
options.LowercaseUrls = true;
options.LowercaseQueryStrings = true;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
[Route("api/[controller]")]
public class MyController : Controller
{
// GET api/my/5
[HttpGet("{id}", Name = "GetById")]
public IActionResult Get(int id)
{
// 根据ID获取模型
// ...
return Ok(model);
}
}
通过检查以上几个方面,你应该能够解决在复杂路由下使用CreatedAtRoute方法的问题。