我有以下内容:
[RoutePrefix("api/UserProfile/{id}")]
public class UserProfileController : ApiController
{
private IdentityContext db = new IdentityContext();
public async Task<IHttpActionResult> GetMapData()
{
我通过以下调用来调用它,但它没有找到返回。
GET /api/UserProfile/GetMapData HTTP/1.1
HTTP/1.1 404 Not Found
我按照文档设置:
config.MapHttpAttributeRoutes();
有人能告诉我我做错了吗?
答案 0 :(得分:1)
添加&#34;路由[&#34; GetMapData&#34;]&#34;在这种情况下操作的属性... RoutePrefix属性不会将任何路由添加到路由表,因此您会看到此行为...它仅用于为操作中存在的任何Route属性提供任何前缀。
答案 1 :(得分:0)
[RoutePrefix]
为您的路线添加前缀。
因此,在您的示例中,如果您未指定[RoutePrefix]
属性,那么按照惯例,您的路线将是:
~/UserProfile/GetMapData
通过添加[RoutePrefix]
属性,您说该控制器中的路由将以指定路由为前缀。
即。您正在有效地改变您的路线:
~/api/UserProfile/{id}/UserProfile/GetMapData
^^^^^^^^^^^^^^^^^^^^^
如果您只想添加“api”前缀,请将前缀更改为:
[RoutePrefix("api")]
查看有关属性路由here的详细信息。