c# - 如何在 ASP.NET WebApi 2 中的控制器之外生成 URL?
问题描述
如何从 ASP.net WebApi 2 中控制器外部的辅助方法生成指向控制器操作的 URL?
return new UrlHelper().Link("DefaultApi", new
{
Controller = "MyController",
Action = "MyAction"
});
更新 1
在 WebApi 中生成 URL 与 ASP.net MVC 不同
更新 2
这是路线配置:
config.Routes.MapHttpRoute(
"DefaultApi",
"API/{Controller}/{Action}"
);
解决方案
这是我克服这个问题的方法:
路由配置
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);
助手类
public static string GenerateLink(HttpRequestMessage httpRequest)
{
var urlHelper = new UrlHelper(httpRequest).Route("DefaultApi", new
{
Controller = "MyController",
Action = "MyAction"
});
return httpRequest.RequestUri.Scheme + "://" + httpRequest.RequestUri.Authority + urlHelper;
}
最后api controller
调用助手类:
public class DefaultController : ApiController
{
[HttpGet]
public string Default()
{
var link = HelperClass.GenerateLink(Request);
return link;
}
}
推荐阅读
- html - CSS - 绝对位置受兄弟的边距影响
- java - Spring Boot 带有@Transactional 注解的方法,调用其他事务性方法并抛出异常
- python - 如何使用ansible以csv格式导入每个ip的配置网络输出?
- scheme - 环境父级和环境有父级的结果相矛盾?在 MIT 方案中
- python - 如何从骨架化中重建 3D 体积?
- dm-script - 识别文本(数字)的颜色并通过 DM 脚本将它们保存到 excel/文本文件
- python - 如何使用python将geojson文件中的坐标以表格形式放置?
- php - 如何在电报机器人中传递键盘的动态?
- spring-data-gemfire - 启动 geode spring boot 并保存到远程区域但无法启动 bean gemfireClusterSchemaObjectInitializer
- azure-active-directory - microsoft-graph-client 抛出 '#
' API 调用错误