如何从 ASP.NET 核心 MVC 服务 android 应用程序

How to serve android application from ASP.NET Core MVC

是否可以使用此 URL domain.tld/android_application_name.apkAndroidApplications 目录中的 Android 应用程序 apk 文件提供服务?

换句话说,我有一个与 Controllers 文件夹和 wwwroot 文件夹以及 Program.cs 文件同级的文件夹。它叫做 AndroidApplications,里面有一堆 .apk 文件。但我不想为他们在 URL 中添加额外的段。我希望能够通过 URL: domain.tld/app1.apk 服务 app1.apk。我怎样才能做到这一点?

你应该看看Url Rewriting Middleware

public void Configure(IApplicationBuilder app)
{
    var options = new RewriteOptions()
        .AddRewrite(@"^(.*?\.apk)$", "AndroidApplications/", 
            skipRemainingRules: true)

    app.UseRewriter(options);
}

这应该重写所有以 apk 结尾的网址,即从 /myapp.apk 网址到 /AndroidApplications/myapp.apk.

我看到了一些答案,例如: 1) 在 IIS 中添加“.apk”扩展名和相应的 mime 类型

enter image description here

2) 在 web.config

的 system.webServer 节点中添加以下节点

但都不起作用。

所以我找到了另一个解决方案,它对我有用

3) 在Startup的Configure方法中设置StaticFileOptions的ServeUnknowFileType为true

var staticFileOptions = 新的静态文件选项 { ServeUnknownFileTypes = 真 };

        app.UseStaticFiles(staticFileOptions);

但是我担心安全问题。

另外以上两种解决方案可能只适用于windows,迁移到linux后仍然是个问题,如有错误请指正。