我正在尝试在WebAPI(C#)中构建一个get动作,它将响应以下内容:
http://{host}/api/Callback/CompleteFlow/{MyId}/{dynamic parameters I have no control on}
例如:http://{host}/api/Callback/CompleteFlow/7?param1=abc¶m2=def
还有:http://{host}/api/Callback/CompleteFlow/7
我创建了一个带有以下签名的动作:
[HttpGet]
public HttpResponseMessage CompleteFlow(int MyId, string requestParams)
{
}
并添加了特定的路由:
config.Routes.MapHttpRoute(
name: "Callback",
routeTemplate: "api/Callback/CompleteFlow/{MyId}/{*requestParams}",
defaults: new { controller = "Callback", action = "CompleteFlow", requestParams = RouteParameter.Optional });
我在动作中的请求参数中得到MyId参数而不是动态参数(我希望得到requestParams = param1 = abc& param2 = def,但是得到null)。
我在这里缺少什么?
谢谢, 尼尔。
答案 0 :(得分:3)
使用以下方法管理以解决此问题:
[HttpGet]
public HttpResponseMessage CompleteFlow(int MyId)
{
var queryString = this.Request.GetQueryNameValuePairs();
}
config.Routes.MapHttpRoute(
name: "Callback",
routeTemplate: "api/Callback/CompleteFlow/{MyId},
defaults: new { controller = "Callback", action = "CompleteFlow" });
希望它有助于某人:)
谢谢, 尼尔。