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. 从SVD到推荐系统

    最近在学习推荐系统(Recommender System),跟大部分人一样,我也是从<推荐系统实践>学起,同时也想跟学机器学习模型时一样使用几个开源的python库玩玩.于是找到了surp ...

  2. kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例)

    kafka关于修改副本数和分区的数的案例实战(也可用作leader节点均衡案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于topic分区数的修改 1>.创建1分 ...

  3. Unity做AR

    Unity做AR呢这里借助了高通的AR包 这里是视频教程  http://www.tudou.com/programs/view/dnvEbIubNzI/ 这里是结果演示  http://www.tu ...

  4. springSession框架来实现sso单点登陆

    介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取 ...

  5. Node remains in conflict,svn冲突解决办法

    修改问价svn 提交后其他客户端svn update更新时出现以下问题 Updating '.':Skipped 'Hi3559_Stream' -- Node remains in conflict ...

  6. JAVA记录-maven JDK配置和常用操作

    1.pom.xml加入(JDK编译器配置) <build> <finalName>项目名</finalName> <plugins> <plugi ...

  7. C# 实现线段的编码裁剪算法(vs2010)

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

  8. Jquery 获取radio选中值

  9. Kafka-Monitor

    kafka Monitor 监测Kafka集群状态 Topic.Consumer Group列表 图形化展示 topic 和 consumer 之间的关系 图形化展示 consumer 的 Offse ...

  10. js加减法运算多出很多小数点

    链接:http://www.jb51.net/article/73043.htm 解决方法:解决这种问题两种方法,第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位小数, ...