已按固定格式整理完成,以下为 WordPress 可复制排版内容:
14-静态文件中间件理解
HTML CSS JS 图片 这些资源之间返回给客户端
静态文件通常再wwwroot
可以设置内容目录
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())//设置内容目录
.UseStartup<Startup>()
.Build();Code language: PHP (php)
访问静态文件
http://<app>/images/图片文件
比如 http://localhost:57629/images/063253ndtt5i8siierdtrt.jpg
记得配置
public void ConfigureDevelopment(IApplicationBuilder app)
{
app.UseStaticFiles();Code language: JavaScript (javascript)
可以设置网页根目录 在program类里
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())//设置内容目录
.UseWebRoot("content")//重新设置网页根目录
.UseStartup<Startup>()
.Build();Code language: PHP (php)
我们就可以直接访问content里面的文件了。原来wwwroot下面的css 等就无法访问了。
经过上面的配置 现在我们访问 /myimages 就可以列出所有文件包括子文件和目录。
15-目录浏览-UseDirectoryBrowser中间件
处于安全考虑 默认情况是禁止目录访问的,不过通过Configure可以开启。
public void ConfigureDevelopment(IApplicationBuilder app)
{
//目录浏览
app.UseDirectoryBrowser(
new DirectoryBrowserOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\images")),
RequestPath = new PathString("/MyImages")
}
);Code language: JavaScript (javascript)
调用AddDirectoryBrowser扩展方法,在StartUP.ConfigureServices中调用:
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}Code language: JavaScript (javascript)
//开启目录浏览
//xxx.com/images/ 列出该目录下面所有的文件
//app.UseDirectoryBrowser();
//访问xxx.com/ 就会列出 网页根目录 wwwroot下面的所有文件
//当然 正常的mvc路由还是可以用
//配置目录浏览参数
app.UseDirectoryBrowser(
new DirectoryBrowserOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\images")),
RequestPath = new PathString("/MyImages")
}
);Code language: JavaScript (javascript)
16-设置默认起始页UseDefaultFiles
设置默认首页给站点的每个访问者提供一个起始页。使用UseDefaultFiles扩展方法:
public void Configure(IApplicationBuilder app)
{
//使用默认起始页
app.UseDefaultFiles();
//使用静态文件
app.UseStaticFiles();Code language: JavaScript (javascript)
app.UseDefaultFiles 必须在 app.UseStaticFiles 之前调用。app.UseDefaultFiles 只是重定向URL而不是真的提供一个文件。因此必须开启静态文件中间件(UseStaticFiles)来提供这个文件。然后通过 app.UseDefaultFiles 就会请求文件夹的时候检索以下文件:
- default.htm
- default.html
- index.htm
- index.html
按以上顺序 找到第一个 就返回。这些文件 要放到网站根目录 就是wwwroot 否则会找不到 找不到就会交给mvc来处理。
设置我们自己定义的默认文件 bamndefault.htm:
//使用默认起始页
DefaultFilesOptions options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("bamndefault.htm");
app.UseDefaultFiles();Code language: JavaScript (javascript)
添加一个 bamndefault.htm:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
this is www.FoxDevelop.com
</body>
</html>Code language: HTML, XML (xml)
配置自定义的默认文件:
//设置我们定义的文件
DefaultFilesOptions options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("bamndefault.htm");
app.UseDefaultFiles(options);Code language: JavaScript (javascript)
这个文件 放在wwwroot下面。
非标准的内容类型
ASP.NET CORE能支持400多种已知文件类型 但是如果用户请求了一个未知的文件类型 静态文件中间件一般返回HTTP 404响应。下面 我们把一个未识别的文件类型 做图片处理。
一个实例-简单文件服务器
创建一个asp.net core空项目,可以设置默认文件目录 wwwroot为其他。我们这个程序 可以访问C盘下面的文件。然后发现有些文件打开不了 404 这个时候我们需要手动设置MIME Type。
关于ASP.NET CORE的配置文件
ASP.NET CORE支持多种不同的配置选项,可以使用json xml ini等。asp.net core中配置文件 不像以前的asp.net。
可以把配置放到缓存里面 也就是它是一个虚拟 没有实体的配置:builder.AddInMemoryCollection();
放在内存的配置:
//添加一个配置 存放在内存中 下次就没有了
var builder = new ConfigurationBuilder();
builder.AddInMemoryCollection();
//得到一个配置 并且以key value的方式存储
var config = builder.Build();
config["key"] = "value";
//读取配置
var value = config["key"];Code language: JavaScript (javascript)
读取本地文件的配置,通过SetBasePath 去设置具体的json所在的目录,然后通过AddJsonFile 加载一个具体的json:
//new一个配置构造器
var builder = new ConfigurationBuilder();
//下面是使用内置的配置 比如appsettings.json
builder.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
var root = builder.Build();
var conn = root.GetValue<string>("conn");Code language: JavaScript (javascript)
appsettings.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"Conn": "www.FoxDevelop.comddddddddddddddddd"
}Code language: JSON / JSON with Comments (json)
在控制器中读取配置:
public IActionResult Index()
{
//new一个配置构造器
var builder = new ConfigurationBuilder();
//下面是使用内置的配置 比如appsettings.json
builder.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
var root = builder.Build();
var conn = root.GetValue<string>("conn");
return View();
}Code language: PHP (php)