在Blazor服务器项目上为没有文件扩展名的静态内容提供服务。

问题描述 投票:1回答:1

按照苹果公司的要求 通用链接我有一个名为 "apple-app-site-association "的文件,它在azure的一个网站的根目录下。访问 mysite.comapple-app-site-association 应该在浏览器中返回 JSON 文本。我将网站托管在 Azure 上,并正在运行 Blazor 服务器项目。我的项目没有web.config文件。

要明确的是,"apple-app-site-association "文件的扩展名不应该是".json"

我看了一下 此法此法.

我还尝试修改Startup.cs中的Configure()方法,使之成为静态文件。

app.UseStaticFiles(new StaticFileOptions
{
    ServeUnknownFileTypes = true,
    DefaultContentType = "application/json"
});

虽然上面的代码确实能正确地为mysite.comapple-app-site-association提供服务,但它有一个不必要的副作用,即404'ing _frameworkblazor.server.js。

我如何修改apple-app-site-association的MIME类型,使我的Blazor服务器项目在访问mysite.comapple-app-site-association时能提供该文件?

或者,使用上面的UseStaticFiles()方法,当加载_frameworkblazor.server.js时,如何解决404错误?

在_Host.cshtml中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <base href="~/" />
    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
    <link href="css/site.css" rel="stylesheet" />
    <link rel="stylesheet" href="_content/Radzen.Blazor/css/default.css" />
</head>
<body>
    ...some stuff...

    <script src="_framework/blazor.server.js"></script>
</body>
</html>
azure-web-sites mime-types blazor blazor-server-side ios-universal-links
1个回答
2
投票

虽然你使用的是Blazor,但它的核心还是ASP.NET Core应用程序,问题其实是关于ASP.NET Core、路由和如何处理静态文件的问题。

从中可以看出 本回答 可能最简单的方法是通过控制器来实现,而不是试图强迫路由器处理没有扩展名的URL。我也曾为 robots.txt 的项目中来控制不同品牌的显示内容。

我试过这样做。

    public class StaticContentController : Controller
    {
        [HttpGet]
        [Route("apple-app-site-association")]
        public ContentResult AppleAppSiteAssociation()
        {
            // source in root of wwwroot folder
            const string source = @"apple-app-site-association.json";
            string json = System.IO.File.ReadAllText(source);
            return Content(json, "application/json", Encoding.UTF8);
        }
    }

源文件(扩展名为.json)在项目中设置了 "Copy if newer "的属性,所以它存在于 /bin 文件夹。

运行。enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.