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

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

WebAPI接收JSON參數注意事項

2019-11-14 14:15:03
字體:
來源:轉載
供稿:網友

運行環境: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
日韩中文字幕国产| 久久免费视频这里只有精品| 国产日韩欧美日韩| 久久成人人人人精品欧| 欧美精品生活片| 亚洲黄在线观看| 一区二区三区视频免费在线观看| 亚洲乱亚洲乱妇无码| 亚洲欧美日韩精品久久奇米色影视| 中日韩美女免费视频网站在线观看| 欧美一区二区视频97| 久久91超碰青草是什么| 欧美成人精品激情在线观看| 高清日韩电视剧大全免费播放在线观看| 深夜精品寂寞黄网站在线观看| 亚洲精品www| 国产精品美女网站| 日韩精品视频免费专区在线播放| 国产亚洲美女精品久久久| 国产精品久久久91| 成人国产精品免费视频| www.国产一区| 欧美国产日产韩国视频| 日韩国产欧美区| 欧美小视频在线观看| 日韩av免费在线看| 欧美激情精品久久久久久蜜臀| 高跟丝袜欧美一区| 中文字幕欧美专区| 欧美国产日韩一区二区| 亚洲三级av在线| 精品国产乱码久久久久久天美| 国产日韩欧美视频| 精品久久久国产精品999| 日韩av片免费在线观看| 免费av在线一区| 日韩成人av在线播放| 九九久久精品一区| 中文字幕亚洲精品| 国产综合视频在线观看| 8x海外华人永久免费日韩内陆视频| 亚洲国产精品女人久久久| 日韩中文娱乐网| 68精品久久久久久欧美| 欧美日韩国产丝袜另类| 欧美成人精品在线播放| 国产精品久久久久久久久久免费| 日韩美女免费观看| 国产精品欧美激情| 美女视频久久黄| 亚洲自拍偷拍色片视频| 亚洲成人免费网站| 国产精品美女主播| www.日韩av.com| 国产精品久久网| 欧美国产日韩一区二区在线观看| 色综合伊人色综合网站| 久久久久www| 尤物99国产成人精品视频| 亚洲久久久久久久久久| 久久av在线看| 亚洲成人av中文字幕| 欧美午夜美女看片| 欧美国产日韩免费| 国产亚洲欧美日韩美女| 久久成人在线视频| 欧美一区二粉嫩精品国产一线天| 国产精品观看在线亚洲人成网| 日韩精品福利在线| 992tv在线成人免费观看| 欧美精品九九久久| 日韩美女在线观看| 国产精品免费视频久久久| 久久香蕉国产线看观看网| 91精品久久久久久| 国产日韩欧美中文| 欧美高清视频一区二区| 日韩经典中文字幕在线观看| 国内精品美女av在线播放| 欧美电影在线免费观看网站| 欧美精品一区在线播放| 日韩二区三区在线| 国产精品久久久久影院日本| 97超级碰在线看视频免费在线看| 欧美制服第一页| 69**夜色精品国产69乱| 亚洲国产小视频在线观看| 黑人巨大精品欧美一区二区免费| 国产丝袜一区视频在线观看| 国产日韩在线看片| 欧美在线一级视频| 久久久亚洲欧洲日产国码aⅴ| 国产精品十八以下禁看| 88国产精品欧美一区二区三区| 亚洲欧美日韩综合| 国产91精品高潮白浆喷水| 国产亚洲人成a一在线v站| 日本午夜在线亚洲.国产| 久久在精品线影院精品国产| 亚洲黄一区二区| 91精品国产精品| 精品久久久香蕉免费精品视频| 欧美激情视频一区二区三区不卡| 国产一区av在线| 久久久国产91| 亚洲天堂色网站| 久久伊人精品一区二区三区| 亚洲第一区中文99精品| 国产精品伦子伦免费视频| 国产精品小说在线| 国产偷国产偷亚洲清高网站| 亚洲永久在线观看| 色七七影院综合| 国产精品久久久久久久久久99| 日韩欧美国产黄色| 国产精品视频xxx| 最近2019中文免费高清视频观看www99| 欧美午夜精品久久久久久浪潮| 欧美影院久久久| 亚洲乱码av中文一区二区| 国产成人在线视频| 伊人久久久久久久久久久久久| 久久久久久久网站| 国产美女久久精品香蕉69| 国产一区二区三区视频免费| 欧美专区第一页| 久久五月天色综合| 国产成人免费91av在线| 日韩成人小视频| 久久国产精品免费视频| 中文字幕亚洲欧美| 日韩欧美国产黄色| 日韩国产在线播放| 午夜精品一区二区三区在线视频| 欧美黑人又粗大| 欧美中文在线字幕| 欧洲成人免费aa| 高跟丝袜欧美一区| 久久九九有精品国产23| 亚洲天堂av综合网| 国产99久久精品一区二区永久免费| 久久久久久亚洲精品中文字幕| 欧美日韩第一视频| 久久精品国产亚洲精品2020| 主播福利视频一区| 精品国产乱码久久久久久天美| 国产精品入口尤物| 日韩视频免费中文字幕| 精品国产户外野外| 97在线视频免费播放| 欧美精品手机在线| 亚洲国产精品国自产拍av秋霞| 亚洲美女av网站| 亚洲国产精品yw在线观看| 性欧美xxxx| 亚洲无亚洲人成网站77777| 欧美激情免费在线| 欧美一级淫片丝袜脚交| 亚洲色图国产精品| 成人久久一区二区三区| 国产伦精品一区二区三区精品视频| 91久久久在线| 国产99久久精品一区二区 夜夜躁日日躁| 欧美亚洲在线播放|