ASP.NET核心静态文件使用教程(9)
在本章中,我们将学习如何使用文件。几乎每个web应用程序都需要一个重要的特性:它可以从文件系统提供文件(静态文件)。
静态文件,如JavaScript文件、图片、CSS文件等。可以通过我们的Asp.Net核心应用程序直接提供给客户。静态文件通常位于web根目录(wwwroot)文件夹中。默认情况下,这是我们可以直接从文件系统提供文件的唯一地方。情况
现在让我们举一个简单的例子来理解我们如何在应用程序中提供这些静态文件。
在这里,我们想向我们的FirstAppDemo应用程序添加一个简单的HTML文件,它被放在wwwroot文件夹中。在解决方案资源管理器中,右键单击wwwroot文件夹,然后选择添加新建项目。
在中间窗格中,选择HTML页面并将其称为index.html,然后单击添加按钮。
您将看到一个简单的index.html文件。让我们添加一些简单的文本和标题如下。
!DOCTYPE html html head meta charset=' utf-8 '/title欢迎来到ASP.NET Core/title/head body你好,Wolrd!这条消息来自我们的第一个静态html文件。/body/html当您运行应用程序并在浏览器中输入index.html时,您会看到该应用程序。运行中间件会抛出一个异常,因为目前我们的应用程序中什么都没有。
目前,我们项目中没有中间件会在文件系统上寻找任何文件。
要解决此问题,请通过在解决方案资源管理器中右键单击您的项目并选择管理NuGet包来进入NuGet包管理器。
搜索微软。静态文件,你会发现静态文件中间件。让我们安装这个nuget包,现在我们可以在Configure方法中注册中间件。
让我们将UseStaticFiles中间件添加到下面程序中显示的Configure方法中。
使用微软。AspNet . Builder使用微软。托管;使用微软。AspNet . Http使用微软。扩展。依赖注射;使用微软。扩展。配置;命名空间FirstAppDemo {公共类Startup { public Startup(){ var builder=new configuration builder()。AddJsonFile(' appsettings . JSON ');配置=构建器。build();}公共图标配置{ get设置;} //此方法由运行时调用。//使用此方法向容器中添加服务。//有关如何配置应用程序的更多信息,请访问http://go.microsoft.com/fwlink/? LinkID=398940 public void ConfigureServices(IServiceCollection services){ }//此方法由运行时调用。//使用此方法配置HTTP请求管道。public void Configure(IApplicationBuilder应用程序){ app。useiis platformhandler();app。usedeveloper exception page();app。useruntimefopage();app。UseStaticFiles();app。运行(异步(上下文)={抛出新系统。异常(“抛出异常”);var msg=配置['消息'];等待上下文。response . WriteAsync(msg);});} //应用程序的入口点。公共静态void Main(字符串[] args)=WebApplication。RunStartup(args);}}除非您通过传入一些不同的配置参数来覆盖选项,否则静态文件将被视为给定请求的请求路径。该请求路径是相对于文件系统的。
如果静态文件根据url找到一个文件,它将直接返回该文件,而不调用下一个块中间件。如果没有找到匹配的文件,它将继续执行下一个块中间件。让我们保存Startup.cs文件并刷新浏览器。
你现在可以看到index.html的档案了。你放在wwwroot文件夹下任何地方的任何JavaScript文件、CSS文件或HTML文件都可以直接作为静态文件在Asp.Net核心中使用。
现在,如果你想要index.html作为你的默认文件,IIS一直有这个功能。您可以给IIS一个默认文件列表。如果有人访问根目录,在这种情况下,如果IIS找到一个名为index.html的文件,它会自动将该文件返回给客户端。让我们现在开始做一些改变。首先,我们需要删除强制错误,然后添加另一个中间件,即UseDefaultFiles。下面是配置方法的实现。/此方法由运行时调用。//使用此方法配置HTTP请求管道。public void Configure(IApplicationBuilder应用程序){ app。useiis platformhandler();app。usedeveloper exception page();app。useruntimefopage();app。UseDefaultFiles();app。UseStaticFiles();app。运行(异步(上下文)={ var msg=Configuration[' message '];等待上下文。response . WriteAsync(msg);});}这个中间件会监听传入的请求,如果请求是根目录,检查是否有匹配的默认文件。
您可以覆盖中间件选项,告诉它如何匹配默认文件,但是默认情况下,index.html是一个默认文件。
让我们保存Startup.cs文件,并将您的浏览器更改为web应用程序的根目录。
现在您可以看到index.html是默认文件。安装中间件的顺序非常重要,因为如果将UseDefaultFiles放在UseStaticFiles之后,可能得不到同样的结果。
如果要使用UseDefaultFiles和UseStaticFiles中间件,可以使用另一个中间件,Microsoft.aspnet.staticfiles,它也是一个NuGet包,是一个服务器中间件。这基本上包含了正确顺序的默认文件和静态文件。
//运行时调用此方法。//使用此方法配置HTTP请求管道。public void Configure(IApplicationBuilder应用程序){ app。useiis platformhandler();app。usedeveloper exception page();app。useruntimefopage();app。UseFileServer();app。运行(异步(上下文)={ var msg=Configuration[' message '];等待上下文。response . WriteAsync(msg);});}让我们再次保存Startup.cs文件。刷新浏览器后,您将看到相同的结果,如下图所示。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:ASP.NET核心静态文件使用教程(9)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。