亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

WebAPI接收JSON參數注意事項

2019-11-14 14:27:06
字體:
來源:轉載
供稿:網友

運行環境:asp.net 4.5.2。

當我們向GlobalConfiguration.Configuration.MessageHandlers添加一個DelegatingHandler派生類后,很容易發生即使命中了Action,但方法參數值為null的問題。

在大多數情況下,我們會在DelegatingHandler派生類里,重寫async Task<HttPResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)方法。

在方法內,做一些事情,比如說訪問日志記錄,任意校驗,添加Header,修改URL(重寫)等工作。

其中最重要需要注意的一點在于request.Content,當我們在方法內訪問了request.Content (get)之后,而不對request.Content進行賦值(set)的話,會發生什么呢?

這會導致我們的方法(action)無法獲取到客戶端Post上來的數據,導致方法參數值為null。

這是為什么呢,這個中原因,我沒去深究。

現在附上解決代碼:

 1 public class DefaultHandler : DelegatingHandler 2 { 3     protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 4     { 5         request.RequestUri = new Uri(request.RequestUri.ToString()); 6  7         MediaTypeHeaderValue contentType = request.Content.Headers.ContentType; 8  9         if (contentType != null)10         {11             switch (contentType.MediaType)12             {13                 case "application/x-www-form-urlencoded":14                     {15                         NameValueCollection formData = await request.Content.ReadAsFormDataAsync(cancellationToken);16                         request.Content = new FormUrlEncodedContent(Correct(formData));17                         //TODO:在這里對formData進行業務處理18                     }19                     break;20                 case "multipart/form-data":21                     {22                         NameValueCollection formData = await request.Content.ReadAsFormDataAsync(cancellationToken);23                         request.Content = new FormUrlEncodedContent(Correct(formData));24                         //TODO:在這里對formData進行業務處理25                     }26                     break;27                 case "application/json":28                     {29                         HttpContentHeaders oldHeaders = request.Content.Headers;30                         string formData = await request.Content.ReadAsStringAsync();31                         request.Content = new StringContent(formData);32                         ReplaceHeaders(request.Content.Headers, oldHeaders);33                         //TODO:在這里對formData進行業務處理34                     }35                     break;36                 default:37                     throw new Exception("Implement It!");38             }39         }40 41         return await base.SendAsync(request, cancellationToken);42     }43 44     private static IEnumerable<KeyValuePair<string, string>> Correct(NameValueCollection formData)45     {46         return formData.Keys.Cast<string>().Select(key => new KeyValuePair<string, string>(key, formData[key])).ToList();47     }48 49     private static void ReplaceHeaders(HttpHeaders currentHeaders, HttpHeaders oldHeaders)50     {51         currentHeaders.Clear();52         foreach (var item in oldHeaders)53             currentHeaders.Add(item.Key, item.Value);54     }55 }

 

在Global.asax添加代碼:

1 protected void Application_Start()2 {3     GlobalConfiguration.Configure(WebApiConfig.Register);4     GlobalConfiguration.Configuration.MessageHandlers.Add(new DefaultHandler());5 }

模型類:

 1 public class TestModel 2 { 3     [JsonProperty(PropertyName ="I")] 4     public long Id { get; set; } 5  6     [JsonProperty(PropertyName = "N")] 7     public string Name { get; set; } 8  9     [JsonProperty(PropertyName = "M")]10     public decimal Money { get; set; }11 12     [JsonProperty(PropertyName = "IE")]13     public bool IsEnable { get; set; }14 15     [JsonProperty(PropertyName = "CD")]16     public DateTime CreateDate { get; set; }17 18     [JsonProperty(PropertyName = "UD")]19     public DateTime? UpdateDate { get; set; }20 }

ApiController:

1 public class DefaultController : ApiController2 {3     [HttpPost]4     public TestModel Find(TestModel model)5     {6         return model;7     }8 }

Request Body:

{"I":10000,"N":"TestModel","M":21547855.0001,"IE":true,"CD":"2015-12-10 12:12:12","UD":"2016-01-01 01:01:01"}

Fiddler4測試:

測試結果:

解決辦法來自:http://stackoverflow.com/questions/27333419/modify-request-content-in-webapi-delegatinghandler


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品永久免费精品| 久久频这里精品99香蕉| 欧美高跟鞋交xxxxhd| 国产噜噜噜噜久久久久久久久| 午夜精品一区二区三区在线视| 国产精品美腿一区在线看| 亚洲欧美日韩天堂一区二区| 国产成人综合久久| 欧美在线www| 亚洲成人中文字幕| 亚洲激情在线观看视频免费| 国产精品成久久久久三级| 成人国产精品一区| 亚洲午夜av电影| 色综合视频一区中文字幕| 日本成人免费在线| 亚洲国语精品自产拍在线观看| 欧美怡春院一区二区三区| 欧洲美女免费图片一区| 91在线|亚洲| 亚洲激情中文字幕| 亚洲www在线观看| 欧美日本在线视频中文字字幕| 伊人一区二区三区久久精品| 亚洲成人av片在线观看| 亚洲色图国产精品| 中文字幕精品一区久久久久| 韩曰欧美视频免费观看| 欧美精品久久久久久久| 久久成人av网站| 91香蕉嫩草神马影院在线观看| 国产精品中文久久久久久久| 日韩欧美第一页| 亚洲片av在线| 欧美成人激情视频| 亚洲香蕉成人av网站在线观看| 久久久久久久国产| 久久亚洲春色中文字幕| 午夜精品一区二区三区av| 日韩日本欧美亚洲| 久久久久成人精品| 最近2019中文字幕在线高清| 亚洲激情在线视频| 精品久久久久国产| 欧美色视频日本高清在线观看| xvideos亚洲人网站| 国产免费一区二区三区在线观看| 亚洲a∨日韩av高清在线观看| 亚洲jizzjizz日本少妇| 国产视频在线一区二区| 亚洲精品少妇网址| 国产精品一区专区欧美日韩| 欧美黑人性猛交| 久久亚洲国产精品成人av秋霞| 国产精品自拍偷拍| 最新91在线视频| 精品无人区乱码1区2区3区在线| 青青在线视频一区二区三区| 亚洲人成电影在线观看天堂色| 国产亚洲在线播放| 日韩免费在线电影| 欧美日韩国产精品一区二区三区四区| 久久久日本电影| zzjj国产精品一区二区| 国产精品中文字幕久久久| 亚洲人午夜精品| 亚洲欧洲自拍偷拍| 亚洲激情在线观看视频免费| 日韩高清人体午夜| 91高清视频免费观看| 一区三区二区视频| 欧美香蕉大胸在线视频观看| 欧美激情视频一区二区| 久久夜色精品国产| 成人免费网站在线| 亚洲国产精品va在线观看黑人| 国产成人一区二区在线| 亚洲自拍小视频| 久久久精品网站| 亚洲日本中文字幕免费在线不卡| 亚洲久久久久久久久久| 中文字幕无线精品亚洲乱码一区| 日本精品久久久久久久| 欧美午夜电影在线| 日韩欧美高清视频| 在线观看日韩欧美| 欧美精品手机在线| 欧美日韩美女在线观看| 一本色道久久88综合日韩精品| 国产91av在线| 久久人人爽人人爽人人片av高请| 2019中文在线观看| 国产日本欧美一区二区三区| 久热精品视频在线观看| 日韩精品有码在线观看| 精品视频在线播放色网色视频| 精品调教chinesegay| 成人精品一区二区三区电影免费| 亚洲热线99精品视频| 欧美激情乱人伦| 日日骚久久av| 精品国产一区二区三区久久久狼| 国产精品日韩一区| 国产精品免费一区豆花| 国产精品都在这里| 欧美成年人网站| 青草青草久热精品视频在线网站| 91在线视频免费| 欧美日韩激情视频8区| 秋霞av国产精品一区| 成人免费福利在线| 欧美在线亚洲一区| 亚洲成人在线视频播放| 欧美伊久线香蕉线新在线| 秋霞av国产精品一区| 国产成人97精品免费看片| 日韩在线观看免费高清| 亚洲精品不卡在线| 92版电视剧仙鹤神针在线观看| 91精品成人久久| 日韩av成人在线观看| 国产精品福利在线观看网址| 2019中文字幕免费视频| 国内揄拍国内精品| 色777狠狠综合秋免鲁丝| 一区二区国产精品视频| 成人av.网址在线网站| 亚洲天堂网在线观看| 亚洲精品资源在线| 欧美成人激情图片网| 成人精品久久av网站| 久久久久久久久久国产| 精品露脸国产偷人在视频| 欧美在线激情视频| 欧美激情网站在线观看| 国产精品人成电影在线观看| 国产精品99一区| 亚洲精品99久久久久| 日韩中文在线中文网三级| 日韩在线www| 欧美极品少妇xxxxⅹ喷水| 清纯唯美亚洲激情| 欧美性资源免费| 亚洲在线免费观看| 国产z一区二区三区| 国产精品久久久久久久久免费| 欧美乱人伦中文字幕在线| 亚洲成色999久久网站| 欧美黄色www| 欧美午夜美女看片| 成人性教育视频在线观看| 欧美精品video| 国产91露脸中文字幕在线| 6080yy精品一区二区三区| 精品国产欧美一区二区五十路| 中文字幕日韩av电影| 69**夜色精品国产69乱| 福利视频导航一区| 日韩一区av在线| 2019中文字幕在线免费观看| 亚洲天天在线日亚洲洲精| 国产在线拍揄自揄视频不卡99| 最新69国产成人精品视频免费| 国产精品99一区|