【问题标题】:How can I inject dynamic data into a web app manifest.json file?如何将动态数据注入 Web 应用 manifest.json 文件?
【发布时间】:2017-09-28 02:36:51
【问题描述】:

.NET MVC 5

我需要在 web 应用程序的 manifest.json 文件中的 start_url 中添加动态文本,甚至可能是动态启动画面(但我会对 start_url 感到满意)。 start_url 需要包含一个种子,它本质上会创建一个“深度”的 start_url,最终会产生如下结果:

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

其中“ABCDEFG”是动态文本,对于不同的客户端会有所不同。当然,“ABCDEFG”将在服务器端交付。这将消除对单独的 manifest.json 文件的需要,这将是一场噩梦。

我不知道是否有办法将动态数据“流式传输”到链接中,或者我可能想出一种方法来动态创建“临时”,如 manifest.json.ABCDEFG 但这似乎很笨拙我认为可能有一种更优雅、更干净的方式。抱歉,如果我听起来有点含糊或缺少正确的术语。

我已经查看了“How can I use php to populate a manifest.json file?”,这几乎是我需要做的事情,但我不知道如何在 .NET 中执行此操作。

即使是一些将我引导至解决方案的链接也将不胜感激。否则我在谷歌上是空的。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 progressive-web-apps manifest.json


    【解决方案1】:

    我遇到了类似的问题。我通过简单地将 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 文件(可以驻留在您服务器上的任何位置):

    { “名称”:“x”, "short_name": "x", “描述”:“x”, "start_url": "@startUrl@", "范围": "@startUrl@", “显示”:“独立”, “方向”:“景观主要”, “背景颜色”:“x”, “主题颜色”:“x”, “图标”:[ { "src": "../images/@icon@144.png", “尺寸”:“144x144”, “类型”:“图像/png” }, { "src": "../images/@icon@192.png", “尺寸”:“192x192”, “类型”:“图像/png” } ] }

    我必须确保 Action 可以被匿名用户调用,而且效果很好。

    【讨论】:

    • 你能分享完整的代码吗?我无法将 manifest.json 文件的请求链接到控制器。
    • 这是完整的代码,但是我在4行代码中使用了[]的地方,你需要把你自己的内容。因此,[MySourceFolder] 将是 "C:\folder" 或您需要放置的任何内容。
    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多