我想让ASP.NET MVC将存储在MongoDB中的文档作为JSON返回,但不需要先将它序列化为.NET类型.但是,BSONDocument.ToJSON()返回如下所示的JSON:
{_id:ObjectId("someid")}
Run Code Online (Sandbox Code Playgroud)
浏览器的JSON解析器不喜欢"ObjectId(nnn)",因此调用失败并出现解析器错误.我能够使用Regex hack获得可解析的JSON:
public ActionResult GetFormDefinitionsJSON()
{
var client = new MongoDB.Driver.MongoClient(ConfigurationManager.ConnectionStrings["mongodb"].ConnectionString);
var db = client.GetServer().GetDatabase("formthing");
var result = db.GetCollection("formdefinitions").FindAll().ToArray();
var sb = new StringBuilder();
sb.Append("[");
var regex = new Regex(@"(ObjectId\()(.*)(\))");
var all = result.Select(x => regex.Replace(x.ToJson(), "$2"));
sb.Append(string.Join(",", all));
sb.Append("]");
return Content(sb.ToString(), "application/json");
}
Run Code Online (Sandbox Code Playgroud)
这将返回可解析的JSON:
{_id:"someid"}
Run Code Online (Sandbox Code Playgroud)
但它闻起来.有没有办法没有正则表达式和字符串构建hackery来获取官方MongoDB驱动程序返回可以由浏览器解析的JSON?或者,我是否遗漏了浏览器端允许{_id:ObjectId("someid")}被解析为有效的内容?
我正在开发一个使用 ODataApiController 的 ASP.NET 应用程序。该应用程序通过查询数据并将其显示在表格中来向用户显示网格。我希望能够导出为多种不同的格式,包括 CSV 和自定义 XML 格式。理想情况下,我只会采用网格使用的相同 OData 查询,设置 Accepts 标头,然后返回 CSV 或 XML。
我创建了 MediaTypeFormatters 来做我需要的事情,但它们只适用于“常规”ApiController,而不是 ODataApiController。查看 github 中的代码,我看到 OData 有自己的 MediaTypeFormatter 方案来处理各种情况,并内置了 XML 和 JSON 格式器。但我看不到如何挂钩以提供自定义格式。我曾尝试继承 ODataMediaTypeFormatter,但在其上设置的断点从未命中。
我只对这里的输出格式感兴趣。如何扩展 OdataApi 以输出不同的格式?
给定实体:
[Table("Clients")]
public class Client
{
[Column("txtClientId")]
public string ClientId { get; set; }
[Column("OrganizationName")]
public string ClientName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和LINQ查询:
var clients = (from c in database.Clients
where c.ClientId.Contains(term) || c.ClientName.Contains(term)
select c).Distinct();
Run Code Online (Sandbox Code Playgroud)
"客户端"的VS调试显示以下查询:
SELECT
[Extent1].[txtClientId] AS [txtClientId],
[Extent1].[OrganizationName] AS [OrganizationName]
FROM [dbo].[Clients] AS [Extent1]
WHERE ([Extent1].[txtClientId] LIKE @p__linq__0 ESCAPE N'~') OR
([Extent1].[OrganizationName] LIKE @p__linq__1 ESCAPE N'~')
Run Code Online (Sandbox Code Playgroud)
请注意,没有'Distinct'.我搜索过这个并找到了一些解决方法,比如分组,匿名类型,或者在代码中执行不同的操作(即ToList().Distinct()),但理想情况下,我想要SQL:
SELECT DISTINCT
[Extent1].[txtClientId] AS [txtClientId],
[Extent1].[OrganizationName] AS [OrganizationName]
FROM [dbo].[Clients] AS [Extent1]
WHERE ([Extent1].[txtClientId] LIKE @p__linq__0 ESCAPE N'~') …Run Code Online (Sandbox Code Playgroud) 我想向基于 Ionic 的应用程序添加功能,以检查相应的应用程序商店是否有更新版本,如果存在,则提示用户下载一次(不要重复 - 他们应该能够跳过并且不会被打扰)。与Siren类似,但适用于 Ionic 以及 Google Play 和 Apple App Store。我看到对本机应用程序和 AppStore 的类似请求以及对 Play Store 的类似请求,但没有任何特定于 Ionic 的请求。我觉得我可以使用应用程序版本和这些请求中列出的 ajax 调用将其缝合在一起,但必须有其他人已经这样做了,并且拥有现有的 Cordova/Capacitor 插件。此外,可能存在细微差别,即简单的解决方案可能会失败(即ajax调用失败、应用商店更改API、设备不支持更新版本等)。
是否有现有的插件或代码可以实现上述行为?
我正在开发Azure Web Apps(以前称为Websites)中的应用程序,并希望确定我了解本地磁盘在多实例场景中的使用方式.当我扩展到多个实例时,它们是否与所有应用程序文件共享一个虚拟磁盘?
考虑这个例子: