ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件

使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上传到服务端了,

即把apk 文件放到网站的wwwroot目录下的Update文件夹下,名字叫apkupdate.apk,

然后访问:http://192.168.1.219:8080/Update/apkupdate.apk,页面返回给我一个404 not find ,

错误如下图所示

上网查看了,说是IIS上没有设置APK 的MIME 的原因,随后设置的APK 的MIME类型,如下

文件扩展名  .apk, MIME类型:application/vnd.android.package-archive

然后重启IIS   运行 IISRESET,

但是设置完后重新打开浏览器,还是返回

找不到 192.168.1.219 的网页

找不到与以下网址对应的网页:http://192.168.1.219:8080/Update/apkupdate.apk

HTTP ERROR 404
 
搜索的很多资料才发现原来是  程序导致的,于是回头把程序修改了一下,重新发布,再打开浏览器就可以了下载APK格式的文件了。

第一种修改方式:

修改的内容如下:
在  startup.cs文件中修改(标红部分)

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
//使用静态文件
app.UseStaticFiles();

app.UseStaticFiles(new StaticFileOptions
{
  //FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()),
  //设置不限制content-type 该设置可以下载所有类型的文件,但是不建议这么设置,因为不安全
  //ServeUnknownFileTypes = true 
  //下面设置可以下载apk和nupkg类型的文件
  ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary<string, string>
  {
    { ".apk","application/vnd.android.package-archive"},
    { ".nupkg","application/zip"}
  })
  });
  app.UseStaticFiles();
  app.UseSession();
  app.UseMvc(routes =>
{
  routes.MapRoute(
  name: "default",
  template: "{controller=Login}/{action=Index}/{id?}");
});
//InitializeData.Initialize();
}

第二种修改方式:

这个问题感谢@蜗牛往前走的指点,所以才记起因为iis只是一个代理了,所以自己捣鼓了一个解决方案,就是在appsettings.json配置里面配置

如下

在到设置Startup.cs的添加代码

 public void ConfigureServices(IServiceCollection services)
{
services.Configure<Dictionary<string,string>>(Configuration.GetSection("Mime"));
services.AddMvc();
services.AddDbContext<ApplicationDataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection")));
}
 
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<Dictionary<string, string>> option)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
// app.UseStaticFiles() //使用新的配置文件方式使用
var provider = new FileExtensionContentTypeProvider();
foreach(string key in option.Value.Keys)
{
provider.Mappings.Add(key, option.Value[key]);
}
app.UseStaticFiles(new StaticFileOptions() { ContentTypeProvider = provider });
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}

因为FileExtensionContentTypeProvider默认的构造函数mime基本已经定死了 而。NET core的网站 很多是不采取iis设置的FileExtensionContentTypeProvider代码地址 大家可以去看看https://github.com/aspnet/StaticFiles/blob/dev/src/Microsoft.AspNetCore.StaticFiles/FileExtensionContentTypeProvider.cs

参考链接:https://www.cnblogs.com/dotnet-org-cn/p/7566724.html

无法下载apk等格式的文件的解决方案---ASP .NET Core 2.0 MVC 发布到IIS上以后无法下载apk等格式的文件的解决方案的更多相关文章

  1. ASP .NET Core 2.0 MVC 发布到 IIS 上以后 无法下载apk等格式的文件

    ASP .NET Core MVC 发布到  IIS 上以后 无法下载apk等格式的文件 使用.NET Core MVC创建了一个站点,其他文件可以下载,但是后来又需求,就把手机端的apk合适的文件上 ...

  2. Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  3. ASP.NET Core 3.0 解决无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称错误

    写在前面 在 ASP.NET Core 的项目中 使用 CodeFirst 的模式,进行初始化迁移时.出现如图所示的问题: 在度娘哪里查了半天之后,才从这个帖子里找到了答案.传送门 分析原因 ASP. ...

  4. Asp.Net Core 2.0 项目实战(3)NCMVC角色权限管理前端UI预览及下载

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  5. ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介

    概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...

  6. [译]ASP.NET Core 2.0 本地文件操作

    问题 如何在ASP.NET Core 2.0中受限地访问本地目录和文件信息? 答案 新建一个空项目,修改Startup类,添加访问本地文件所需的服务: public void ConfigureSer ...

  7. 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...

  8. asp.net core 2.0 Json结果的格式

    asp.net core 2.0 默认返回的结果格式是Json, 并使用json.net对结果默认做了camel case的转化(大概可理解为首字母小写). 这一点与老.net web api 不一样 ...

  9. ASP.NET Core 1.0: 指定Static File中的文件作为default page

    指定一个网站的default page是很容易的事情.譬如IIS Management中,可以通过default page来指定,而默认的index.html, index.htm之类,则早已经被设置 ...

随机推荐

  1. 如何将Anaconda更新到想要的python版本

    最近用Anaconda比较多,因为它里面的包很全啊.如果下个原生的python,要用的时候得自己一个个装. 但是有些包又互相依赖,一个个装的时候实在很抓狂.懒人就想到了anaconda这种套装集合了. ...

  2. Java连接访问Oracle--Connection.setSavepoint()方法使用

    使用时有一个重要前提:你不能使用oracle的classes12.jar,需要把oracle的jdbc驱动替换成ojdbc14.jar,否则savepoint()功能不能使用(出现“abstract方 ...

  3. webserver apache 2.2.22-7/ apache webdav / redhat 6.3

    s 问题1:Failed to resolve server name for 10.24.41.161 (check DNS)   /   RedHat 6.3 64位系统 / apache htt ...

  4. Java中Dom4j解析XML

    与利用DOM.SAX.JAXP机制来解析xml相比DOM4J表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml.dom4j是一 ...

  5. VirtualBox设置共享文件夹

    前提是已经正确安装增强工具,在安装增强工具时,没有faile的,全部done 1.添加共享文件夹(已经在lmg下创建过目录 /mnt/bdshare ) sudo mount -t vboxsf Ba ...

  6. HTTP1.0、HTTP1.1和HTTP2.0的区别

    一.HTTP的历史 早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端 ...

  7. Nginx 学习笔记(二)Web 服务启用 HTTP/2

    个人网站提升为HTTP2.0协议,加速访问 一.条件 1.openssl的版本必须在1.0.2e及以上 2.nginx的版本必须在1.9.5以上 二.编译安装 1.openssl 编译安装 (1)开始 ...

  8. C# 实现Bresenham算法(vs2010)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. ELF格式探析之三:sections

    前文链接: ELF格式探析之一:Segment和Section ELF格式探析之二:文件头ELF Header详解 今天我们讲对目标文件(可重定位文件)和可执行文件都很重要的section. 我们在讲 ...

  10. Linux 4.10.8 根文件系统制作(一)---环境搭建

    一.工具 制作工具为busybox 下载地址:https://busybox.net/ 解压: 二.制作文件系统 进入目录,执行make menuconfig: 2.1 busybox setting ...