Asp.Net Core 中的静态文件
Asp.Net Core 中的静态文件
在这节中我们将讨论如何使 ASP.NET Core 应用程序,支持静态文件,如 HTML,图像,CSS 和 JavaScript 文件。
静态文件
- 默认情况下,Asp.Net Core 应用程序不会提供静态文件。
- 静态文件的默认目录是
wwwroot
,此目录必须位于项目文件夹的根目录中。
将图片复制并粘贴到 wwwroot 文件夹中。我们假设文件的名称是 banner.jpg。为了能够从浏览器访问此文件,路径为:http://{{serverName}}/banner.jpg
在我们的示例中,我们在本地计算机上运行, 因此 URL 将如下所示。您的计算机上的端口号可能不同。 http://localhost:3290/banner.jpg
。
从我的电脑,然后导航到上面的 Url 的时候, 我们仍然是通过Run()
方法的中间件,返回响应的结果,。我没有看到图片banner.jpg
。 这是因为,目前我们的应用程序请求处理管道,没有可以提供静态文件的所需中间件。我们需要使用的中间件UseStaticFiles()
。
修改Configure()
方法中的代码,将UseStaticFiles()
中间件添加到我们的应用程序的请求处理管道中,如下所示。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//添加静态文件中间件
app.UseStaticFiles();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
在wwwroot
文件夹中没有像 vs 提供的默认模板一样把图片、CSS 和 JavaScript 文件进行分类,我们建议将不同的文件类型进行文件夹区分,参考下图文件夹层次结构 :
为了能够从浏览器访问image1.jpg
我们输入地址为 http://localhost:49119/images/image1.jpg
得到结果。
提供 wwwroot 文件夹之外的静态文件
默认情况下,UseStaticFiles()
中间件仅提供 wwwroot 文件夹中的静态文件。如果您愿意,我们还可以在wwwroot
文件夹之外提供静态文件。
提供默认文档
大多数 Web 程序都有一个默认文档,它是用户访问程序地址时显示的文档内容。例如,您有一个名为default.html
的文件,并且您希望在用户访问应用程序的根 URL 时提供它,即http://localhost:3290
此时,我们来访问这个地址看看,我看到我使用Run()
方法注册的中间件产生的回调。但是我没有看到默认文档default.html
的内容。为了能够提供默认页面,我们必须在应用程序的请求处理管道中插入UseDefaultFiles()中间件
。
//添加默认文件中间件
app.UseDefaultFiles();
//添加静态文件中间件
app.UseStaticFiles();
请注意:必须在
UseStaticFiles
之前,注册UseDefaultFiles
来提供默认文件。UseDefaultFiles
是一个 URL 重写器,实际上并没有提供文件。它只是将URL
重写定位到默认文档,然后还是由静态文件中间件提供。地址栏中显示的 URL 仍然是根节点的 URL,而不是重写的 URL。
以下是UseDefaultFiles
中间件默认会去查找的地址信息
- index.htm 的默认文件
- index.html
- default.htm
- default.html
如果要使用其他文档,如 52abp.html 例如,作为您的默认文档,您可以使用以下代码执行此操作。
//将52abp.html指定为默认文档
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add(“52abp.html”);
//添加默认文件中间件
app.UseDefaultFiles(defaultFilesOptions);
//添加静态文件中间件
app.UseStaticFiles();
UseFileServer 中间件
UseFileServer
结合了UseStaticFiles,UseDefaultFiles和UseDirectoryBrowser
中间件的功能。DirectoryBrowser中间件,支持目录浏览,并允许用户查看指定目录中的文件。 我们可以用UseFileServer 中间件替换UseStaticFiles 和 UseDefaultFiles中间件。
/使用UseFileServer而不是UseDefaultFiles和UseStaticFiles
FileServerOptions fileServerOptions = new FileServerOptions();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add(“52abp.html”);
app.UseFileServer(fileServerOptions);
这里要注意的知识点:是我们应该使用添加中间件的方式,添加到应用程序的请求处理管道的方法。 在大多数情况下,我们使用以 USE 开头的扩展方法添加中间件。例如:
UseDeveloperExceptionPage()
UseDefaultFiles()
UseStaticFiles()
UseFileServer()
如果要自定义这些中间件组件,他有对应的可配置选项卡。参考下表: | 中间件 | 选项对象 | | ------------------------- | ----------------------------- | | UseDeveloperExceptionPage | DeveloperExceptionPageOptions | | UseDefaultFiles | DefaultFilesOptions | | UseStaticFiles | StaticFileOptions | | UseFileServer | FileServerOptions |
欢迎添加个人微信号:Like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!
原文地址:https://www.cnblogs.com/lonelyxmas/p/11456470.html
- Install Django Nginx uWSGI
- Spring Cloud Edgware新特性之七:可选的EnableDiscoveryClient注解
- 【LEETCODE】模拟面试-46. Permutations
- CentOS6 Upgrade Python
- Emacs setup for Go Development
- 【LEETCODE】模拟面试-39. Combination Sum
- Docker系列教程12-使用Maven插件构建Docker镜像
- Linux nohup 用法
- 【LEETCODE】模拟面试-84-Largest Rectangle in Histogram
- Docker系列教程11-使用Nexus管理Docker镜像
- Mac 配置终端环境
- 【LEETCODE】模拟面试-101-Symmetric Tree
- Docker系列教程10-使用Docker Registry管理镜像
- webapp开发调试环境--weinre配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入解析Android中的setContentView加载布局原理
- Android编程之自定义ProgressBar示例
- Android自动获取输入短信验证码库AutoVerifyCode详解
- Android编程实现对话框形式进度条功能示例
- Android ButtonOnClick事件的写法总结
- Android 自定义弹出菜单和对话框功能实例代码
- linux文件管理命令实例分析【权限、创建、删除、复制、移动、搜索等】
- Android编程操作手机通讯录的方法示例
- Android中oncreate中获得控件高度或宽度的实现方法
- Android编程自定义对话框(Dialog)位置及大小的方法
- android端实现验证码随机生成功能
- Android编程实现切换imageView的方法分析
- 猿实战20——商品发布之sku与笛卡尔乘积的那些事儿
- 浅谈Android单元测试的作用以及简单示例
- linux上传并配置jdk和tomcat的教程详解