小编Ben*_* E.的帖子

在 MongoDB 中使用嵌套数组保存字典

以下类应由 API 作为 Json 接收并存储在 MongoDB 中,使用 C# 驱动程序和 Web API。data 属性是非结构化的,但我可以将其限制为在这些值中可能嵌套数组的键值对。

public class Something
{
    [BsonId, JsonIgnore]
    public ObjectId _id { get; set; }

    public IDictionary<string, object> data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从客户端发布 json 时,Json.NET 会正确反序列化。

将类保存到 MongoDB,我在具有 c# 特定类型的数据库中得到类似的信息:

{
    property1: 'one',
    property2: {
        _t: 'System.Collections.Generic.List`1[System.Object]'
        _v:
        [
            {}, {}, {}, ...
        ]
     }
}
Run Code Online (Sandbox Code Playgroud)

基于这些来源,我为 Json.NET 整合了一个 CustomCreationConverter,它将 List 嵌套到 Dictionary 的值中:

将 JsonDictionaryAttributes 应用于属性

Json.NET:反序列化嵌套字典

CustomCreationConverter 源代码

public class Something
{
    ...
    [JsonProperty(ItemConverterType = typeof(CustomConverter))] …
Run Code Online (Sandbox Code Playgroud)

c# serialization json.net mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
4908
查看次数

使用C#驱动程序v2 API调试MongoDB查询

我可以序列化一个FilterDefinition<T>json字符串来查看引擎盖下的内容吗?或者只通过日志和更详细的数据库分析器设置?

c# mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
883
查看次数

通过文件 API 加载时图像自动旋转

在 Chrome 81 和其他新版本中,默认情况下会观察 EXIF 方向,并且该方向image-orientation: from-image已过时(请参阅SO 线程测试站点)。

现在,当从文件加载 JPEG 时,也可以使用它吗?我确实得到了错误的旋转,但是当通过 url 将相同的图像加载到图像标签中时,结果是正确的。

var r = new FileReader();

r.onload = function(e) {
    var img = new Image();

    img.onload = function() {
        var width = img.naturalWidth,
            height = img.naturalHeight;
        // does not observe EXIF image orientation
    };

    img.src = src;
};

r.readAsDataURL(file);
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome html5-canvas

5
推荐指数
0
解决办法
273
查看次数

未等待嵌套的异步 lambda

以下代码不会返回它正在迭代的整个集合。每次运行时返回的数组具有任意长度。怎么了?

public async Task<IHttpActionResult> GetClients()
{
    var clientInfoCollection = new ConcurrentBag<ClientInfoModel>();

    await _client.Iterate(async (client) =>
    {
        clientInfoCollection.Add(new ClientInfoModel
        {
            name = client.name,
            userCount = await _user.Count(clientId)
        });
    });

    return Ok(clientInfoCollection.ToArray());
}
Run Code Online (Sandbox Code Playgroud)

以下代码使用新的异步 MongoDB C# 驱动程序

public async Task Iterate(Action<TDocument> processor)
{
    await _collection.Find<TDocument>(_ => true).ForEachAsync(processor);
}
Run Code Online (Sandbox Code Playgroud)

c# lambda mongodb async-await

4
推荐指数
1
解决办法
353
查看次数

在映射上保留 null - 不要为类型创建默认值

如何让 AutoMapper 从源中保留 null?

new MapperConfiguration(cfg => cfg.CreateMap<MyModel, MyModel>()
    .ForMember(m => m.prop1, opt => opt.AllowNull())
    .ForMember(m => m.prop1, opt => opt.NullSubstitute(null))
    .ForMember(m => m.prop1, opt => opt.MapFrom(s => s.prop1))
).CreateMapper();
Run Code Online (Sandbox Code Playgroud)

prop1 是可以为空的,例如string[]

我总是得到该类型的默认值。

.net c# automapper

4
推荐指数
1
解决办法
2096
查看次数

在pdf中以宽度方式拟合内容

渲染为pdf时,我需要html页面为打印宽度的100%.否则内容会被切断.是否有捷径可寻?

我提出了一个解决方法,它在渲染后获取html宽度,然后设置缩放系数以强制使用正确的宽度.

var page = require('webpage').create(),
    system = require('system'),
    dpi = 89.9, // strange, but that's what I get on Mac
    pageWidth = 210; // in mm

var getWidth = function() {
    return page.evaluate(function() {
        // get width manually
        // ...
        return width;
    });
};

page.paperSize = {format: 'A4', orientation: 'portrait'};

page.open(system.args[1], function (status) {
    window.setTimeout(function () {
        page.zoomFactor = (pageWidth / 25.4) * dpi / getWidth();
        page.render(system.args[2]);
        phantom.exit();
    }, 200);
});
Run Code Online (Sandbox Code Playgroud)

寻找一个直接的解决方案,因为获得宽度需要我做一些技巧,因为我使用的框架.

pdf phantomjs

3
推荐指数
1
解决办法
2411
查看次数

了解与WebClient UploadString()vs UploadStringTaskAsync的异步

当它在非可视上下文中运行时,我很难理解异步vs同步的好处,例如Azure Worker或Web Api控制器:

using (var wc = new WebClient())
{
    wc.UploadString(uri, message);
    // vs.
    await wc.UploadStringTaskAsync(uri, message);
}
Run Code Online (Sandbox Code Playgroud)

主线程是否需要等待,因此它对性能没有影响?除了UI工作之外还有什么?

.net c# asynchronous task-parallel-library async-await

2
推荐指数
1
解决办法
2665
查看次数

使用 Web Deploy 使用 Web App 部署 WebJobs

我正在将 Web App 项目迁移到新的 Azure 帐户。一切正常,但发布时不包括 Web 作业。

webjobs-list.json 相同,发布配置文件相同等,只是缺少 Web 作业。

不过,我可以单独部署它们。

知道出了什么问题吗?

azure visual-studio azure-webjobs

0
推荐指数
1
解决办法
1677
查看次数