如何在web应用程序的manifest.json文件中注入动态数据?

3

.NET MVC 5

我需要在一个web应用的manifest.json文件中添加动态文本到start_url,甚至可能包括动态闪屏(但是如果只有start_url我也会很满意)。start_url需要包含一个种子,这个种子将创建一个“深度”的start_url,最终结果类似于:

{
  "background_color": "black",
   ....
  "start_url": "/ABCDEFG”
}

其中“ABCDEFG”是动态文本,对于不同的客户端将会有所不同。当然,“ABCDEFG”将在服务器端传递。这将消除需要单独使用manifest.json文件的麻烦。

我不知道是否有一种方法可以将动态数据“流”到链接中,或者我可能可以想出一种动态创建“temp”的方法,如manifest.json.ABCDEFG,但这似乎很笨拙,我认为可能有更优雅和更干净的方式。如果我听起来有点含糊不清或缺乏正确的术语,请谅解。

我查看了“How can I use php to populate a manifest.json file?”,这几乎完全符合我的需求,但我不知道如何在.NET中实现此操作。

即使是几个指向解决方案的链接也将非常感激。否则我在谷歌上无从下手。

1个回答

2

我遇到了相似的问题。我通过将json文件作为字符串读入并替换一些占位符来解决它。

下面是我的控制器(具有虚假变量名):

[AllowAnonymous]
public class PublicController : Controller
{
  public ActionResult SiteManifest()
  {
    var rawJsonText = System.IO.File.ReadAllText(Path.Combine([MySourceFolder], "rawManifest.json"));
    rawJsonText = rawJsonText.Replace("@url@", [MyRootUrl]);
    rawJsonText = rawJsonText.Replace("@icon@", [MyIconName]);
    return Content(rawJsonText, "application/json");
  }
}

我的rawManifest.json文件(可以存放在服务器的任何位置)如下:

{
  "name": "x",
  "short_name": "x",
  "description": "x",
  "start_url": "@startUrl@",
  "scope": "@startUrl@",
  "display": "standalone",
  "orientation": "landscape-primary",
  "background_color": "x",
  "theme_color": "x",
  "icons": [
    {
      "src": "../images/@icon@144.png",
      "sizes": "144x144",
      "type": "image/png"
    },
    {
      "src": "../images/@icon@192.png",
      "sizes": "192x192",
      "type": "image/png"
    }
  ]
}

我必须确保该操作可被匿名用户调用,效果非常好。


1
你可以分享完整的代码吗?我在将manifest.json文件的请求链接到控制器时遇到了问题。 - illeb
1
这是完整的代码,但在这4行代码中我使用了 [ ],你需要放入自己的内容。所以,[MySourceFolder] 可以是 "C:\folder" 或者任何你需要放入的内容。 - Glen Little

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接