gpt4 book ai didi

c# - 具有属性路由的 ASP.NET Web API Controller 在没有路由名称的情况下无法工作

转载 作者:太空狗 更新时间:2023-10-30 01:31:49 25 4
gpt4 key购买 nike

我使用属性路由,但是当我指定一个空的Route 属性时,出现以下错误:

405.0 - Method Not Allowed

但是,如果我在属性中添加路由名称,如 [Route("bar")],一切都会按预期进行。

为什么其中一种操作方法会按预期工作,而另一种会产生 405 错误?

[System.Web.Http.RoutePrefix("foo")]
public partial class MyController : ApiController
{
[System.Web.Http.HttpPost]
[System.Web.Http.Route("bar")] // I am able to POST to /foo/bar
public async Task<MyResponseModel> BarMethod([FromBody]MyArgumentsModel arguments)
{

}

[System.Web.Http.HttpPost]
[System.Web.Http.Route] // Error when I POST to /foo, "Method Not Allowed"
public async Task<MyResponseModel> FooMethod([FromBody]MyArgumentsModel arguments)
{

}
}

有什么我可能遗漏的想法吗?

最佳答案

您需要在路由属性 [Route("")] 中包含一个空字符串,以便在使用路由前缀时将其用作默认路由。

下面的文章展示了它是如何完成的

来源:Attribute Routing in ASP.NET Web API 2

建议更改的结果如下所示

[RoutePrefix("foo")]
public partial class MyController : ApiController {
//eg POST foo/bar
[HttpPost]
[Route("bar")]
public async Task<MyResponseModel> BarMethod([FromBody]MyArgumentsModel arguments) {
//...
}

//eg POST foo
[HttpPost]
[Route("")]
public async Task<MyResponseModel> FooMethod([FromBody]MyArgumentsModel arguments) {
//...
}
}

关于c# - 具有属性路由的 ASP.NET Web API Controller 在没有路由名称的情况下无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com