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. maven内部运行原理解析

    maven至今还是Java编程语言构建的事实标准,大部分项目还在使用maven来进行构建,因此了解maven内部运行的原理对定位和分析问题还是很有裨益的.本篇文章主要介绍一些maven内部运行过程中的 ...

  2. Fiddler Tips

    使用代理服务器 点击 Tools -> Fiddler Options -> Gateway Fiddler 默认将使用刚打开Fiddler窗口时IE 设置的代理服务器,当然你也可以手动修 ...

  3. HDU 4123(树的直径+单调队列)

    Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. grunt初体验

    最近参与多人团队项目开发过程之中,使用到了grunt来构建项目,包括一些文件的压缩,合并等操作.亲自动手进行grunt任务的配置,学到了很多东西.现将自己的学习过程记录如下: 1.对于一个项目而言,使 ...

  5. Android中ListView嵌套进ScrollView时高度很小的解决方案

    package com.example.test.util; import android.view.View; import android.view.ViewGroup; import andro ...

  6. 【转载】ASP.NET获取路径的方法

    HttpContext.Current.Request.PhysicalPath;    // 获得当前页面的完整物理路径.比如 F:\XFU.NSQS\project\website\Default ...

  7. delphi 快捷键大全

    ************************* 1.功能键 2.组合键 3.其他快捷键 4.补充 5.补充1(带分类) 6.补充2 --Edit by 2013.1.14 ************ ...

  8. maven项目构建

    Maven是apache的一个开源项目.是一个用来把源代码构建成可发布的构件的工具. Maven的功能非常强大,可以认为是一个项目管理工具,不仅仅是一个构建工具. Maven本身的核心很小,但是可以在 ...

  9. 深入理解JavaScript,这一篇就够了

    前言 JavaScript 是我接触到的第二门编程语言,第一门是 C 语言.然后才是 C++.Java 还有其它一些什么.所以我对 JavaScript 是非常有感情的,毕竟使用它有十多年了.早就想写 ...

  10. CPU特性漏洞测试(Meltdown and Spectre)

    2018年1月4日,国外安全研究人员披露了名为"Meltdown"和"Spectre"两组CPU特性漏洞,该漏洞波及到近20年的Intel, AMD, Qual ...