【发布时间】:2014-01-17 16:40:00
【问题描述】:
我有一个 WebAPI 方法如下:
public HttpResponseMessage Post(ITradeCustomerPrincipal user, OrderModel value)
我得到了错误
无法将多个参数(“用户”和“值”)绑定到请求的内容。
当我尝试调用它时。我明白为什么。
我有一个全局应用的属性,它将ITradeCustomerPrincipal 注入到任何操作中,如下所示:
public class TradeConsumerFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var matchedArguments = actionContext.ActionDescriptor.ActionBinding.ParameterBindings
.SingleOrDefault(pb => typeof(ITradeCustomerPrincipal).IsAssignableFrom(pb.Descriptor.ParameterType));
if (matchedArguments != null)
{
var TradeCustomerPrincipal = HttpContext.Current.User as ITradeCustomerPrincipal;
if (TradeCustomerPrincipal != null)
{
actionContext.ActionArguments[matchedArguments.Descriptor.ParameterName] = TradeCustomerPrincipal;
}
}
base.OnActionExecuting(actionContext);
}
}
这样action就不需要自己绑定ITradeCustomerPrincipal了,由属性自动完成。
我如何告诉操作不要绑定正文(或我猜的任何地方)的 user 参数,因为它是由操作过滤器预先设置的?
【问题讨论】:
标签: c# asp.net-web-api