asp.net – WebApi:将参数映射到标头值
发布时间:2020-12-16 00:20:17 所属栏目:asp.Net 来源:网络整理
导读:我做了一些搜索,但似乎没有找到任何东西…… 使用WebApi,我想将输入参数映射到标题值:例如 例如.在控制器中: public User GetUser(int id){ ... return user;} 我希望WebApi将id参数映射到标头值(例如X-Auth:1234)…而不是URL参数. 这支持吗? 解决方法
我做了一些搜索,但似乎没有找到任何东西……
使用WebApi,我想将输入参数映射到标题值:例如 例如.在控制器中: public User GetUser(int id){ ... return user; } 我希望WebApi将id参数映射到标头值(例如X-Auth:1234)…而不是URL参数. 这支持吗? 解决方法
我不认为这是开箱即用的,例如[FromBody]属性.
您似乎应该能够使用模型绑定器来实现此功能,如 here所述.在模型绑定器中,您可以访问请求及其标头,因此您应该能够读取标头并将其值设置为bindingContext.型号属性. 编辑:进一步阅读文章,似乎自定义HttpParameterBinding和ParameterBindingAttribute是一个更合适的解决方案,或者至少我会这样做.您可以实现一个通用的[FromHeader]属性来完成这项工作.我也在解决同样的问题,所以一旦我有了解决方案,我就会发布我的解决方案. 编辑2:这是我的实现: public class FromHeaderBinding : HttpParameterBinding { private string name; public FromHeaderBinding(HttpParameterDescriptor parameter,string headerName) : base(parameter) { if (string.IsNullOrEmpty(headerName)) { throw new ArgumentNullException("headerName"); } this.name = headerName; } public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider,HttpActionContext actionContext,CancellationToken cancellationToken) { IEnumerable<string> values; if (actionContext.Request.Headers.TryGetValues(this.name,out values)) { actionContext.ActionArguments[this.Descriptor.ParameterName] = values.FirstOrDefault(); } var taskSource = new TaskCompletionSource<object>(); taskSource.SetResult(null); return taskSource.Task; } } public abstract class FromHeaderAttribute : ParameterBindingAttribute { private string name; public FromHeaderAttribute(string headerName) { this.name = headerName; } public override HttpParameterBinding GetBinding(HttpParameterDescriptor parameter) { return new FromHeaderBinding(parameter,this.name); } } public class MyHeaderAttribute : FromHeaderAttribute { public MyHeaderAttribute() : base("MyHeaderName") { } } 然后你可以像这样使用它: [HttpGet] public IHttpActionResult GetItem([MyHeader] string headerValue) { ... } 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 插入后在实体框架中获取记录ID
- asp.net-mvc-4 – 在umbraco中获取错误无法找到类型或命名空
- asp.net MVC 权限设计 asp.net MVC 权限设计(续
- Asp.Net上传前检查文件大小
- asp.net-mvc – asp.net mvc – 视图中的命名空间
- asp.net-mvc – 如何使用需要js的Kendo UI MVC Extensions?
- asp.net – 我需要html编码标题属性(工具提示)吗?
- asp.net-mvc – Web API返回csv文件
- MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel
- 如何在ASP.Net 4 Razor和Twitter Bootstrap中使用JQuery Da
推荐文章
站长推荐
- asp.net – FileUpload.hasFile始终为False
- asp-classic – 在ASP Classic应用程序中获取根目
- .NET Core多平台开发体验[2]: Mac OS X
- asp.net-web-api – 没有IQueryable的OData
- asp.net-mvc – 在Razor中输出单引号生成的JavaS
- .net – 如何创建一个dotnet核心单个可执行文件
- asp.net – AppHarbor上的MongoDB成员资格提供程
- asp.net – 什么是使用jQuery的一些利弊?
- asp.net – StyleBundle索引超出了数组的边界
- asp.net-mvc – 在var中渲染多个空格
热点阅读