在OData输出中编码字符串字段

阿夫沙尔·莫赫比(Afshar Mohebi)

我有一个OData控制器,希望对其输出的字符串字段进行编码。OData输出结果以明文形式发送回客户端,但是我想在将其发送到客户端之前对其进行加密。

似乎最好的方法是使用自定义的OData序列化程序或Feed序列化程序来实现我的目标。但是我不确定要定制哪个类。重写某些方法还是实现我自己的序列化类的自定义版本是否更好。

任何帮助表示赞赏。

阿夫沙尔·莫赫比(Afshar Mohebi)

找到一种方法来做到这一点。我通过在本指南的帮助下自定义序列化程序来完成此操作最终代码:

using Microsoft.Data.Edm;
using Microsoft.Data.OData;
using System.Web.Http.OData.Formatter.Serialization;

namespace MyProj
{
    public class CustomODataEntityTypeSerializer : ODataEntityTypeSerializer
    {
        public CustomODataEntityTypeSerializer(ODataSerializerProvider serializerProvider) : base(serializerProvider)
        {
        }

        public override void WriteObjectInline(object graph, IEdmTypeReference expectedType, ODataWriter writer, ODataSerializerContext writeContext)
        {
            //http://odata.github.io/WebApi/#06-03-costomize-odata-formatter

            if (graph is CompanyDto)
            {
                var company = (CompanyDto)graph;

                company.FirstName = Encrypt(company.FirstName);
                company.LastName = Encrypt(company.LastName);
            }

            base.WriteObjectInline(graph, expectedType, writer, writeContext);
        }
    }
}

和这个类:

using Microsoft.Data.Edm;
using System.Web.Http.OData.Formatter.Serialization;

namespace MyProj
{
    public class CustomDefaultODataSerializerProvider : DefaultODataSerializerProvider
    {
        CustomODataEntityTypeSerializer _customODataEntityTypeSerializer;

        public CustomDefaultODataSerializerProvider()
        {
            _customODataEntityTypeSerializer = new CustomODataEntityTypeSerializer(this);
        }

        public override ODataEdmTypeSerializer GetEdmTypeSerializer(IEdmTypeReference edmType)
        {
            if (edmType.IsEntity())
            {
                return _customODataEntityTypeSerializer;
            }

            return base.GetEdmTypeSerializer(edmType);
        }
    }
}

并将其初始化如下:

            var odataFormatters = ODataMediaTypeFormatters.Create(new CustomDefaultODataSerializerProvider(), new DefaultODataDeserializerProvider());
        config.Formatters.InsertRange(0, odataFormatters);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP中的编码字符串

来自分类Dev

字符串中的编码字符阻止提交

来自分类Dev

解码Java中的编码字符串?

来自分类Dev

如何在Angularjs中编码字符串?

来自分类Dev

不要混淆Proguard中的硬编码字符串

来自分类Dev

NodeJ中的URL编码字符串

来自分类Dev

如何在Eclipse中编码字符串?

来自分类Dev

如何在Android中制作编码字符串?

来自分类Dev

如何在文件内容中编码字符串?

来自分类Dev

不要混淆Proguard中的硬编码字符串

来自分类Dev

在utf8中编码字节字符串

来自分类Dev

如何在SQL CHAR中编码字符串

来自分类Dev

编码和解码字符串中的差异

来自分类Dev

在Qt C ++中替换编码字符串的“ =“

来自分类Dev

在python 3中编码字符串“tamilnadu”

来自分类Dev

编码字符串在java中不能正常工作

来自分类Dev

编码和解码字符串

来自分类Dev

URL编码字符串

来自分类Dev

编码字符串数组

来自分类Dev

从strftime编码字符串

来自分类Dev

URL编码字符串

来自分类Dev

编码和解码字符串

来自分类Dev

使用 Python 编码字符串

来自分类Dev

Python-unicode字符串中的ASCII编码字符串;如何删除“ u”?

来自分类Dev

URL编码字符串,谷歌在Chrome浏览器中的编码方式

来自分类Dev

在Unity中显示TextMeshPro中编码字符串的变音符号

来自分类Dev

为什么sys.stdin中的字符串与脚本中的硬编码字符串不同?

来自分类Dev

如何在忽略不可编码字符的同时输出 Python3(unicode)字符串

来自分类Dev

js中的预编码字符串将单引号更改为双引号