【问题标题】:APK packages is not served in ASP.NET Core MVCAPK 包不在 ASP.NET Core MVC 中提供
【发布时间】:2018-11-23 20:37:53
【问题描述】:

我想在我的 ASP.NET Core MVC 项目中提供 .apk 文件,但我不能,因为它返回 404。

我在 VS 2017 中使用默认模板创建了一个简单的 ASP.NET Core MVC 项目,并将 .apk 文件添加到 wwwroot 文件夹,然后我尝试使用 /application.apk 路径访问它,但它没有t 工作,而 /favicon.ico 工作,并且该目录中的其他静态内容工作,因为在默认模板中调用 app.UseStaticFiles()

然后我尝试更改配置,将静态内容从wwwroot 文件夹中取出,并将application.apk 放在项目的根目录中(wwwroot 上方的一个文件夹)并使用以下方式配置项目:

app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory())
});

再次没有结果。我得到 404。

然后我创建了一个Web.config 文件并添加了这个 MIME 类型:

<staticContent>
  <mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" />
</staticContent>

仍然不提供.apk 文件。

我该怎么办?

【问题讨论】:

    标签: c# android asp.net-core-mvc


    【解决方案1】:

    ASP.NET Core 静态文件中间件显然不提供在ContentTypeProvider 中没有映射到 MIME 类型的文件。要解决这个问题,您应该将 MIME 映射添加到 ContentTypeProvider

        FileExtensionContentTypeProvider contentTypes = new FileExtensionContentTypeProvider();
        contentTypes.Mappings[".apk"] = "application/vnd.android.package-archive";
        app.UseStaticFiles(new StaticFileOptions
        {
            ContentTypeProvider = contentTypes
        });
    

    现在将提供.apk

    【讨论】:

    • 我们应该在哪里添加这个?
    • 你应该在 Startup 类中添加这个,注册中间件的地方(参见 UseStaticFiles 行)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多