C# 具有基于属性路由的自定义消息处理程序不适用于Web API 2

C# 具有基于属性路由的自定义消息处理程序不适用于Web API 2,c#,webapi2,message-handlers,C#,Webapi2,Message Handlers,我的WebAPI2项目中有一个消息处理程序,它将url更改为不同的路径。例如url“root/controller/somevalue/detials”将更改为“root/controller/2/details”。其中“somevalue”或2是动作方法的参数 在调用之前,我已放置了消息处理程序注册码 config.maphttpAttribute路由() 消息处理程序已注册为 config.MessageHandlers.Add(newmyhandler()) 对于常规路线映射,它工作正常。

我的WebAPI2项目中有一个消息处理程序,它将url更改为不同的路径。例如url
“root/controller/somevalue/detials”
将更改为
“root/controller/2/details”
。其中“somevalue”或2是动作方法的参数

在调用之前,我已放置了消息处理程序注册码
config.maphttpAttribute路由()
消息处理程序已注册为
config.MessageHandlers.Add(newmyhandler())

对于常规路线映射,它工作正常。 但如果启用基于属性的路由,则会调用消息处理程序并更改url,但操作方法会使用相同的“somevalue”而不是“2”命中


这里发生了什么?

如果您使用的是
RouteAttribute
,那么您可以使用这样的路由值来捕获某些值:

Route["details/{somevalue}"]
public IHttpActionResult MyCustiomApiMethod(string somevalue)
{
    //return 
}

如果您使用的是
RouteAttribute
,则可以使用如下的路由值来捕获某些值:

Route["details/{somevalue}"]
public IHttpActionResult MyCustiomApiMethod(string somevalue)
{
    //return 
}

是的,我完全按照你说的做了。但问题是“somevalue”是加密的,我正在使用该消息处理程序对其进行解密。所以some值在解密后应该是一个数字。您使用过上面的属性吗?括号{}中的封闭变量,您想捕获它,它的路径是
somevalue/details
,但您的答案是
details/somevalue
(位置互换)是的,我做的正是您指出的。但问题是“somevalue”是加密的,我正在使用该消息处理程序对其进行解密。所以some值在解密后应该是一个数字。您使用过上面的属性吗?括号{}中的封闭变量要捕获,其路径为
somevalue/details
,但答案为
details/somevalue
(位置互换)