以下类应由 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 应用于属性
public class Something
{
...
[JsonProperty(ItemConverterType = typeof(CustomConverter))] …Run Code Online (Sandbox Code Playgroud) 我可以序列化一个FilterDefinition<T>json字符串来查看引擎盖下的内容吗?或者只通过日志和更详细的数据库分析器设置?
在 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) 以下代码不会返回它正在迭代的整个集合。每次运行时返回的数组具有任意长度。怎么了?
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) 如何让 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[]
我总是得到该类型的默认值。
渲染为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)
寻找一个直接的解决方案,因为获得宽度需要我做一些技巧,因为我使用的框架.
当它在非可视上下文中运行时,我很难理解异步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工作之外还有什么?
我正在将 Web App 项目迁移到新的 Azure 帐户。一切正常,但发布时不包括 Web 作业。
webjobs-list.json 相同,发布配置文件相同等,只是缺少 Web 作业。
不过,我可以单独部署它们。
知道出了什么问题吗?
c# ×5
mongodb ×3
.net ×2
async-await ×2
asynchronous ×1
automapper ×1
azure ×1
html5-canvas ×1
javascript ×1
json.net ×1
lambda ×1
pdf ×1
phantomjs ×1