Asp.Net WebAPI 通过HttpContextBase或者HttpRquest 获取请求参数

摘要:
WEBAPI中的请求是HttpRequestMessage类型。它不能像Web传统那样使用querystring和from方法来接收参数。HttpRequist的传统基类是HttpRequistBase。因此,我们将直接使用(HttpContextBase)Request。属性[“MS_HttpContext”]publicvoid Post([FromBody]stringva

WEBAPI中的Request是HttpRequestMessage类型,不能像Web传统那样有querystring和from 方法接收参数,而传统的HttpReqest的基类是HttpReqestBase

所以这里我们就直接使用(HttpContextBase)Request.Properties["MS_HttpContext"]

public void Post([FromBody]string value)
{
    HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
    HttpRequestBase request = context.Request;//定义传统request对象            
    string name = request.Form["name"];    
}

1.获取遍历路由参数

//获取路由参数
IDictionary<string, object> dic = this.RequestContext.RouteData.Values;
StringBuilder builder = new StringBuilder();
foreach (var item in dic)
{
    builder.AppendFormat("key:{0},value:{1}", item.Key, item.Value);
    builder.AppendLine();
}
return builder.ToString();

Asp.Net WebAPI 通过HttpContextBase或者HttpRquest 获取请求参数第1张

2.遍历表单参数

////获取表单参数
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
HttpRequestBase request = context.Request;//定义传统request对象  
StringBuilder builder = new StringBuilder();
foreach (string item in request.Form.Keys)
{
    builder.AppendFormat("key:{0},value:{1}", item, request.Form[item]);
    builder.AppendLine();
}
return builder.ToString();

Asp.Net WebAPI 通过HttpContextBase或者HttpRquest 获取请求参数第2张

3.使用asp.net 的 HttpRquest 获取参数方式

        [HttpGet]
        public string Test1()
        {
            System.Web.HttpRequest req= System.Web.HttpContext.Current.Request;
            return req.QueryString["username"];
        }

免责声明:文章转载自《Asp.Net WebAPI 通过HttpContextBase或者HttpRquest 获取请求参数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇fiddle 安装与配置从手机浏览器或者 APP 中跳转到微信并跳转到指定页原理及行业内幕详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

若依管理系统源码分析-分页的实现以及post请求时的分页

场景 官方示例分页实现 前端调用实现 //一般在查询参数中定义分页变量 queryParams: { pageNum: 1, pageSize: 10}, //页面添加分页组件,传入分页变量 <pagination v-show="total>0":total="total":page.sync="queryParams.page...

Android 换肤功能的实现(Apk插件方式)

一、概述 由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因 所以国内如果要做一个漂亮的换肤方案,需要自己去实现。 目前换肤的方法大概有三种方案: (1)把皮肤资源文件内置于应用程序Apk的资源目录下,这种方案最简单,但是导致apk安装包比会比比较大,而且不好管理 (2)将皮肤资源文件打包成zip的资源文件方式提供,该...

利用Elasticsearch搭建全球域名解析记录

前言 数据来源,由Rapid7收集并提供下载https://scans.io/study/sonar.fdns 下载Elasticsearch 2.3 ElasticSearch是一个基于Lucene开发的搜索服务器,具有分布式多用户的能力,ElasticSearch是用Java开发的开源项目(Apache许可条款),基于Restful Web接口,能够...

彻底搞懂Spring类加载(注解方式)

单例预加载默认 单例懒加载   正确的加载时机   错误的加载时机 多例懒加载仅支持懒加载 spring beanfactory类高级用法   反射方式加载类 需要注意的问题 通过 Spring 注册的类一共只有三种加载方式! 环境:spring-context 4.2.6jdk 8Eclipse 4.7 最简单的配置 <?xml ve...

并发编程(十二)—— Java 线程池 实现原理与源码深度解析 之 submit 方法 (二)

在上一篇《并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。这篇文章是接着上一篇文章写的,如果你没有阅读上一篇文章,建议你去读读。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有我们需要它的...

c# 键值对的方式post提交

DataContractJsonSerializer jsQcData = new DataContractJsonSerializer(typeof(DATA<data>));//DATA<data>要转换成json的值 MemoryStream msObj = new MemoryStream(); jsQcData.Writ...