
我在网上搜索了一些提取生成的表达式树的方法..但是无法找到足够的信息,所以我有点希望有人能更深入地了解整个OData-“框架”是如何工作的..
任何从哪里开始的想法?
解决方法 您可以在执行之前更改Odata网址.继承自EnablequeryAttribute类并更改URL.以下是在将guID字符串格式发送到oracle之前将其更改为十六进制字符串格式的真实案例.public class EnablequeryForGuID : EnablequeryAttribute{ public overrIDe voID OnActionExecuting(httpActionContext actionContext) { var url = actionContext.Request.RequestUri.OriginalString; var newUrl = ModifyUrl(url); actionContext.Request.RequestUri = new Uri(newUrl); base.OnActionExecuting(actionContext); } private string ModifyUrl(string url) { Regex regex = new Regex(@"%27([A-Za-z0-9]{32})%27"); var res = regex.Matches(url); if (res.Count > 0) { var guIDPart = res[0].Value.Remove(0,3); guIDPart = guIDPart.Remove(guIDPart.Length - 3,3); var guIDValue = new GuID(BitConverter.ToString((new GuID(guIDPart)).ToByteArray()).Replace("-","")); url = url.Replace(res[0].Value,guIDValue.ToString()); } return url; }} 然后在控制器方法上使用这个新属性:
[httpGet] [EnablequeryForGuID] [ODaTaroute("GetSomething")] public IhttpActionResult GetSomething() { .... } 原始查询:
OData/GetSomething?&$filter=MyGuID%20eq%20%272C3C7BC0EC7FA248B0DEE3DAA371EE73%27
更改查询:
总结OData/GetSomething?&$filter=MyGuID%20eq%20e5794d6a-5db1-475a-8c49-0f91a8f53c8a
以上是内存溢出为你收集整理的c# – 拦截OData“查询”全部内容,希望文章能够帮你解决c# – 拦截OData“查询”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)