手机版

ASP.NET核心静态文件的使用

时间:2021-08-24 来源:互联网 编辑:宝哥软件园 浏览:

前言

静态文件(如HTML、CSS、图片和Javascript等资源)将由ASP.NET核心应用程序直接提供给客户端。

静态文件通常位于网站根目录的内容根目录/wwwroot文件夹中。通常项目的当前目录设置为Content root,这样就可以在开发阶段定义项目的web根目录。

公共静态iwebhostbuilder createwebhostbuilder(字符串[]参数)=webhost。createdefaultbuilder (args)。usecontentroot(目录。getcurrent directory())//设置当前目录。UseStartupStartup();静态文件可以保存在网站根目录下的任何文件夹中,并通过相对于根目录的路径进行访问。当使用vs创建一个默认的Web应用程序时,会在wwwroot目录下生成几个文件夹:css、images、js。如果您限制访问图像目录中的图像:

http://app/iamges/filename

https://localhost :44303/iam ges/filename

如果要使用静态文件服务,必须配置中间件,并将静态文件中间件添加到管道中。静态文件通常是默认配置的,而app。在configure方法中调用UseStaticFiles()。

这个应用。UseStaticFiles()使web根目录(默认情况下为wwwroot)下的文件可访问。同时,其他目录中的内容也可以通过UseStaticFiles方法提供:

如果wwwroot之外有一个MyStaticFiles文件夹,请访问该文件夹中的资源:

public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ app。usehttpredirection();app。UseStaticFiles();app。使用静态文件(新的静态文件选项(){文件提供程序=新的物理文件提供程序(路径。合并(目录。GetCurrentDirectory(),@'MyStaticFiles '),//用于定位资源的文件系统request path=new path string('/static files ')//请求地址});}可以通过访问

http://app/StaticFiles/test.png

https://localhost :44303/static FIles/test . png

1.静态文件授权

默认情况下,静态文件组件不提供授权检查。通过静态文件中间件访问的任何文件都是公共的。要对文件进行授权,您可以将文件保存在wwwroot之外,并将目录设置为可由静态文件中间件访问。同时,通过控制器动作访问文件,并在动作中授权后返回文件结果。

2.浏览目录

目录浏览允许网站用户查看指定目录下的目录和文件列表。出于安全原因,默认情况下禁止目录访问。在启动时调用UseDirectoryBrowser扩展方法。配置可以打开浏览的网络应用目录:

public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ app。UseStaticFiles();app。UseDirectoryBrowser(新目录行选项(){文件提供程序=新物理文件提供程序(路径。合并(目录。GetCurrentDirectory(),@' wwwroot \ images ')),RequestPath=new Path string('/my images ')//如果未指定request path,将使用PhysicalFileProvider中的path参数作为默认文件夹,替换wwwroot });}然后在Startup中调用AddDirectoryBrowser扩展方法。配置服务.

这样,您可以通过访问http://app/MyImages来浏览wwwroot/images文件夹中的目录,但不能访问文件:

要访问特定文件,您需要调用UseStaticFiles配置:

public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ app。UseStaticFiles();app。使用静态文件(新的静态文件选项(){文件提供程序=新的物理文件提供程序(路径。合并(目录。GetCurrentDirectory(),@'wwwroot\ Images '),//用于定位资源的文件系统request path=new path string('/my Images ')});app。UseDirectoryBrowser(新目录行选项(){文件提供程序=新物理文件提供程序(路径。合并(目录。GetCurrentDirectory(),@'wwwroot\images ')、request path=new path string('/my images ')});}3.默认文件

设置默认主页可以为网站访问者提供一个起始页,并在“启动”中调用UseDefaFiles扩展方法。配置:

应用程序.UseDefaultFiles(选项);应用程序.UseStaticFiles();UseDefaultFiles必须在使用静态文件之前调用使用默认文件只是重写了网址,而不是真的提供了一个这样的文件,浏览器统一资源定位器将继续显示用户输入的网址。所以必须开启静态文件中间件。而且默认文件必须放在静态文件中间件可以访问得到的地方,默认是网站根目录中。

通过UseDefaultFiles,请求文件夹的时候检索以下文件:

default.htm

default.html

index.htm

index.html

也可以使用UseDefaultFiles将默认页面改为其他页面:

公共空配置(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ if(env .IsDevelopment()) { app .usedeveloper异常页();} else { app .UseExceptionHandler('/Home/Error ');应用程序.UseHsts();}应用程序.usehttpredirection();DefaultFilesOptions options=new DefaultFilesOptions();选项。默认文件名。清除();选项。默认文件名。添加('我的默认。html ');应用程序.UseDefaultFiles(选项);应用程序.UseStaticFiles();应用程序.UseMvc(routes={ routes .MapRoute(名称: '默认',模板: ' {控制器=Home }/{操作=Index }/{ id?}');});}4.UseFileServer

UseFileServer集合了使用静态文件,使用默认文件,使用目录浏览器。

调用应用程序.UseFileServer();请用了静态文件和默认文件,但不允许直接访问目录。需要调用应用程序.UseFileServer(enabledirectorybrowsing : true);才能启用目录浏览功能。

如果想要访问网站根目录以外的文件,需要配置一个文件服务器选项对象

公共空配置(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ app .UseStaticFiles();//如果不调用,将不会启动默认功能应用程序.UseFileServer(新文件服务器选项(){文件提供程序=新物理文件提供程序(路径。合并(目录. GetCurrentDirectory(),@'MyStaticFiles '),请求路径=新路径字符串('/static files '),EnableDirectoryBrowsing=true });}注意,如果将启用目录浏览设置为没错,需要在配置服务中调用服务AddDirectoryBrowser();

如果默认文件夹下有默认页面,将显示默认页面,而不是目录列表。

5.文件扩展内容类型提供程序

文件扩展内容类型提供程序类包含一个将文件扩展名映射到哑剧内容类型的集合。

例如:

公共void Configure(IAP presentonbuilder应用程序,IHostingEnvironment env,ILoggerFactory logger factory){ var provider=new文件扩展名content type provider();提供商。映射[.html 3]=' text/html ';提供商。映射[' images ']=' iam ge/png ';提供商。映射。删除(' .MP4’);应用程序.使用静态文件(新的静态文件选项(){文件提供程序=新的物理文件提供程序(路径。合并(目录GetCurrentDirectory(),@'MyStaticFiles ')、请求路径=新路径字符串('/static files ')、content type provider=provider });}更多哑剧类型可以访问:http://www .伊安娜。组织/任务/媒体类型/媒体类型。可扩展的超文本标记语言

6.非标准的内容类型

如果用户请求了一个未知的文件类型,静态文件中间件将会返回HTTP 404响应。如果启用目录浏览,则该文件的链接将会被显示,但RUI会返回一个HTTP404错误。

使用使用静态文件方法可以将未知类型作为指定类型处理:

应用程序.usestatifiles(new statifileoptions(){ servunknownfiletypes=true,DefaultContentType=' application/x-msdownload ' });对于未识别的,默认为应用程序/x-msdownload,浏览器将会下载这些文件。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

版权声明:ASP.NET核心静态文件的使用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。