c# - WebAPI 2 自定义路由
问题描述
我已使用框架 4.7.1 通过在方法顶部添加属性将自定义路由添加到 WebAPI ASP.NET 应用程序:
public class ShapeFileAnalysisController : ApiController
{
[HttpGet]
[Route("GetDataValues")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage GetDataValues()
{
string result = Models.ShapeFileReader.GetAdmin2();
HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(result, Encoding.UTF8, "application/json");
return response;
}
}
但是当我添加 [Route("...")} 属性时,完整的 URL 将从 mysite.com/api/ShapeFileAnalysis 更改为 mysite.com/GetDataValues
webapiconfig.cs 是:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我应该怎么做才能仍然 mysite.com/api/ShapeFileAnalysis/GetDataValues ?
解决方案
属性路由使用放置在属性中的路由模板。
您的路线只有GetDataValues
这样才能成为完整的路线路径。
mysite.com/GetDataValues
如果您放置所需的路由路径
//GET api/ShapeFileAnalysis/GetDataValues
[HttpGet]
[Route("api/ShapeFileAnalysis/GetDataValues")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage GetDataValues() {
//...
}
然后你会得到想要的路径
mysite.com/api/ShapeFileAnalysis/GetDataValues
您可以使用该[RoutePrefix]
属性为整个控制器设置一个公共前缀
[RoutePrefix( "api/ShapeFileAnalysis" )]
public class ShapeFileAnalysisController : ApiController {
//GET api/ShapeFileAnalysis/GetDataValues
[HttpGet]
[Route("GetDataValues")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage GetDataValues() {
//...omitted for brevity
}
}
ASP.NET Web API 2 中的引用属性路由
推荐阅读
- php - 我需要使用 localhost 或 dns 名称来启动 php 聊天服务器吗?
- c# - 如果属性具有 [Required] 注释,则 Razor 不会触发命名处理程序
- javascript - Jquery 函数在局部视图上不起作用
- datagrid - 如何将 InfluxDB 连接到 DataGrid?
- python - 创建高斯拟合
- google-cloud-platform - AttributeError:模块“grpc.experimental.aio”在 Google Cloud 中没有属性“Call”
- powershell - Powershell,调用 Web 请求错误(仅在 Windows Server 2012R 上)
- laravel - laravel homestead 中的任务调度器
- apache-spark - 火花数据框 - 将非列类型变量传递给udf
- node.js - Proactive Teams 消息 - trustServiceUrl “url”参数必须是字符串类型