- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这门课:
[RoutePrefix("api/v2/Foo")]
public class SomeController : BaseController
{
[Route("")]
[HttpGet]
public async Task<HttpResponseMessage> Get(SomeEnum? param)
{
//...
}
}
我想通过以下方式调用它:api/v2/Foo?param=Bar
但它不起作用。
如果我这样更改路由属性以在 RouteAttribute 中包含一些内容:
[Route("SomeRoute")]
[HttpGet]
public async Task<HttpResponseMessage> Get(SomeEnum? param)
{
//...
}
...然后我可以调用api/v2/Foo/SomeRoute?param=Bar
,但这不是我想要的。
如何让第一种情况起作用?
编辑:Domas Masiulis 引导我找到了答案:上面的场景确实有效,只是默认的全局路由把事情搞砸了。我通过添加符合我们惯例的单独默认路由解决了这个问题...
public static void RegisterRoutes(RouteCollection routes)
{
//ADDING THIS FIXED MY ISSUE
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/v2/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//SOURCE OF THE ORIGINAL PROBLEM
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Administration", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
最佳答案
有什么特殊条件吗?也许隐藏在 BaseController 中? RouteConfig 有自定义配置吗?
你给出的例子对我有用,做了一个快速测试:
使用代码:
[RoutePrefix("api/v2/Foo")]
public class SomeController : ApiController
{
[Route("")]
[HttpGet]
public Task<int> Get(int param)
{
return Task.FromResult(2);
}
}
呼唤 http://localhost:1910/api/v2/Foo?param=1按预期工作 - 返回 2。
关于c# - 如何在 Web API 中支持空 RouteAttribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661101/
我目前在 DTO 之间有继承,只要我为每个具体(叶节点)DTO 定义了一个 [Route],而不是在某个父类(super class)上,它就可以很好地工作。到目前为止,父类(super class)
我有一个带有两个必需参数和一些可选参数的操作: [HttpGet] public IHttpActionResult GetUsers(DateTime dateFrom, DateTime date
在 ASP.NET Core (v 2.1.5) 中,您可以创建 Controller ,而无需让它们继承 Controller 类(如您所知)。如果这样做,您必须使用 RouteAttribute
我一直在使用 WebApi,我试图了解使用路由属性与让 WebApi 根据函数名称自动创建路由的区别。我有很多这种形式的 Controller : public class MyController
这是我的 Controller 操作: HttpGet // GET: ControllerName/Create [Route("CreateDocument/{personId}")] publi
我有这门课: [RoutePrefix("api/v2/Foo")] public class SomeController : BaseController { [Route("")]
这是我的 Global.asax protected void Application_Start() { RegisterRoutes(); } pr
我以为是在网络上进行简单的搜索,结果却不止于此。 最接近解决方案的是第一个可以使用属性进行路由的解决方案:AttributeRouting not working with HttpConfigura
我已经使用 NuGet 包管理器将 ASP.NET web API self host 添加到我的项目(一个 Windows 服务项目)Nuget 添加了那些库 ASP.NET Web API 自托管
我们有一个 IRouteConstraint 被检查得比它应该的多得多。经过进一步测试,看起来 [Route] 上的 Order 被路由约束忽略了。 例如,如果我有以下约束: public class
我想知道 ServiceStack 注册路由的最佳实践是什么。 在 AppHost 中使用 Routes.Add 定义路由 在 DTO 上使用 RouteAttiribute 装饰器定义路由 我读过一
我正在使用 MVC 5,我正在尝试通过 System.Web.Mvc.RouteAttribute 完成路由。 所以大多数操作都有效,但一个无效。 我创建了一个Delete-action 和一个Edi
我需要制作一个支持多个 ASP.NET Core, Web API 动词的 HttpGet ,唯一的区别是查询字符串,但似乎查询字符串不能成为路由模板的一部分——这是真的吗? 路由模板非常相似,实际上
RouteAttribute("abc", Order = 2) 顺序似乎只在 Controller 中受到尊重:当在同一 Controller 中定义以下方法时,我得到预期的行为,即 Method1
我是一名优秀的程序员,十分优秀!