搜索
首页后端开发C#.Net教程asp.net core实例教程之异常处理与静态文件教程

<h1 id="Asp-Net-Core-异常处理">Asp.Net Core-异常处理</h1> <ol class=" list-paddingleft-2"><li><p>Asp.Net Core-异常处理</p></li></ol> <p>在这一章,我们将讨论异常和错误处理。当 ASP.NET Core应用程序中发生错误时,您可以以各种不同的方式来处理。让我们来看看通过添加一个中间件来处理异常情况,这个中间件将帮助我们处理错误。</p> <p>要模拟出错,让我们转到应用程序,运行,如果我们只是抛出异常的话,看看程序是如何运转转的。</p> <p class="cnblogs_code"><br></p> <pre class="brush:php;toolbar:false"> 1 using Microsoft.AspNet.Builder;   2 using Microsoft.AspNet.Hosting;   3 using Microsoft.AspNet.Http;   4 using Microsoft.Extensions.DependencyInjection;   5 using Microsoft.Extensions.Configuration;    6 namespace FirstAppDemo {   7    public class Startup {   8       public Startup() {   9          var builder = new ConfigurationBuilder()  10             .AddJsonFile("AppSettings.json");  11          Configuration = builder.Build();  12       }   13       public IConfiguration Configuration { get; set; }   14          15       // This method gets called by the runtime.  16       // Use this method to add services to the container.  17       // For more information on how to configure your application,  18       // visit http://go.microsoft.com/fwlink/?LinkID=398940 19       public void ConfigureServices(IServiceCollection services) {  20       }   21        22       // This method gets called by the runtime.  23       // Use this method to configure the HTTP request pipeline.24       public void Configure(IApplicationBuilder app) {  25          app.UseIISPlatformHandler();   26          app.UseRuntimeInfoPage();   27           28          app.Run(async (context) => {  29             throw new System.Exception("Throw Exception");  30             var msg = Configuration["message"];  31             await context.Response.WriteAsync(msg);  32          });   33       }   34          35       // Entry point for the application. 36       public static void Main(string[] args) => WebApplication.Run<Startup>(args);  37    }    38 }</pre> <p> </p> <p> </p> <p> </p> <p>它只会抛出一个非常通用的异常信息。保存Startup.cs页面并运行您的应用程序。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/470d228a9709dbe93d976747550661ed-0.jpg" class="lazy" alt=""></p> <p>您将看到我们未能加载此资源。出现了一个 HTTP 500 错误,内部服务器错误,那个页面不是很有帮助。它可能很方便得到一些异常信息。</p> <p>让我们添加另一个中间件 UseDeveloperExceptionPage。</p> <p class="cnblogs_code"><br></p> <pre class="brush:php;toolbar:false"> 1 // This method gets called by the runtime.    2 // Use this method to configure the HTTP request pipeline.  3 public void Configure(IApplicationBuilder app) {   4    app.UseIISPlatformHandler();    5    app.UseDeveloperExceptionPage();   6    app.UseRuntimeInfoPage();    7      8    app.Run(async (context) => {   9       throw new System.Exception("Throw Exception");  10       var msg = Configuration["message"];  11       await context.Response.WriteAsync(msg);  12    });   13 }14</pre> <p> </p> <p> </p> <p>这个中间件与其他的有点不同,其他中间件通常监听传入的请求并对请求做一些响应。</p> <p>UseDeveloperExceptionPage不会如此在意传入的请求在之后的管道会发生什么。</p> <p>它只是调用下一个中间件,然后再等待,看看管道中是否会出现异常,如果有异常,这块中间件会给你一个关于该异常的错误页面。</p> <p>现在让我们再次运行应用程序。将会产生一个如下面的屏幕截图所示的输出。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/470d228a9709dbe93d976747550661ed-1.jpg" class="lazy" alt=""></p> <p>现在如果程序中出现异常,您将在页面中看到一些想要看到的异常信息。你也会得到一个堆栈跟踪:这里可以看到Startup.cs第37行有一个未处理的异常抛出。</p> <p>所有这些异常信息对开发人员将非常有用。事实上,我们可能只希望当开发人员运行应用程序时才显示这些异常信息。</p> <p> </p> <h1 id="Asp-Net-Core-静态文件">Asp.Net Core 静态文件</h1> <ol class=" list-paddingleft-2"> <li><p>Asp.Net Core 静态文件</p></li> <li><p>案例</p></li> </ol> <p>在这一章,我们将学习如何使用文件。几乎每个web应用程序都需要一个重要特性:能够从文件系统提供文件(静态文件)。</p> <ul class=" list-paddingleft-2"> <li><p>静态文件像JavaScript文件、图片、CSS文件等,我们Asp.Net Core应用程序可以直接提供给客户。</p></li> <li><p>静态文件通常位于web根(wwwroot)文件夹。</p></li> <li><p>默认情况下,这是我们可以直接从文件系统提供文件的唯一的地方。</p></li> </ul> <p> </p> <hr> <h2 id="案例">案例</h2> <p>现在让我们通过一个简单的示例来了解我们在我们的应用程序如何提供这些静态文件。</p> <p>在这里,我们想要向我们的 FirstAppDemo 应用程序添加一个简单的 HTML 文件,该 HTML 文件放在web 根 (wwwroot) 文件夹。在解决方案资源管理器中右键单击wwwroot文件夹并选择Add→新项。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/470d228a9709dbe93d976747550661ed-2.jpg" class="lazy" alt=""></p> <p>在中间窗格中,选择 HTML 页面并称之为 index.html,单击添加按钮。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/470d228a9709dbe93d976747550661ed-3.jpg" class="lazy" alt=""></p> <p>你会看到一个简单的index.html文件。让我们在其中添加一些简单的文本和标题如下所示。</p> <p class="syntaxhighlighter html"><br></p> <table border="0"><tbody><tr class="firstRow"> <td class="gutter"> <p class="line number1 index0 alt2">1</p> <p class="line number2 index1 alt1">2</p> <p class="line number3 index2 alt2">3</p> <p class="line number4 index3 alt1">4</p> <p class="line number5 index4 alt2">5</p> <p class="line number6 index5 alt1">6</p> <p class="line number7 index6 alt2">7</p> <p class="line number8 index7 alt1">8</p> <p class="line number9 index8 alt2">9</p> <p class="line number10 index9 alt1">10</p> </td> <td class="code"> <p class="container"><br></p> <p class="line number1 index0 alt2"><code class="html plain"><!DOCTYPE html> </code></p> <p class="line number2 index1 alt1"><code class="html plain"><</code><code class="html keyword">html</code><code class="html plain">> </code></p> <p class="line number3 index2 alt2"><code class="html spaces">   </code><code class="html plain"><</code><code class="html keyword">head</code><code class="html plain">> </code></p> <p class="line number4 index3 alt1"><code class="html spaces">      </code><code class="html plain"><</code><code class="html keyword">meta</code> <code class="html color1">charset</code><code class="html plain">=</code><code class="html string">"utf-8"</code> <code class="html plain">/> </code></p> <p class="line number5 index4 alt2"><code class="html spaces">      </code><code class="html plain"><</code><code class="html keyword">title</code><code class="html plain">>Welcome to ASP.NET Core</</code><code class="html keyword">title</code><code class="html plain">> </code></p> <p class="line number6 index5 alt1"><code class="html spaces">   </code><code class="html plain"></</code><code class="html keyword">head</code><code class="html plain">> </code></p> <p class="line number7 index6 alt2"><code class="html spaces">   </code><code class="html plain"><</code><code class="html keyword">body</code><code class="html plain">> </code></p> <p class="line number8 index7 alt1"><code class="html spaces">      </code><code class="html plain">Hello, Wolrd! this message is from our first static HTML file.  </code></p> <p class="line number9 index8 alt2"><code class="html spaces">   </code><code class="html plain"></</code><code class="html keyword">body</code><code class="html plain">> </code></p> <p class="line number10 index9 alt1"><code class="html plain"></</code><code class="html keyword">html</code><code class="html plain">></code></p> </td> </tr></tbody></table> <p>当您运行应用程序并在浏览器中输入index.html时,您将看到app.Run中间件将抛出一个异常,因为目前在我们的应用程序中什么都没有。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/315d89c3796749d419a682e7ec51873a-4.jpg" class="lazy" alt=""></p> <p>现在我们的项目中没有中间件会去找文件系统上的任何文件。</p> <p>为了解决这个问题,通过在解决方案资源管理器中右键单击您的项目并选择管理NuGet包进入到NuGet包管理器。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/315d89c3796749d419a682e7ec51873a-5.jpg" class="lazy" alt=""></p> <p>搜索 Microsoft.AspNet.StaticFiles,会找到静态文件中间件。让我们安装此 nuget 程序包,现在我们可以在Configure方法中注册中间件。</p> <p>让我们在下面的程序中所示的Configure方法中添加 UseStaticFiles 中间件。</p> <p class="cnblogs_code"><br></p> <pre class="brush:php;toolbar:false"> 1 using Microsoft.AspNet.Builder;   2 using Microsoft.AspNet.Hosting;   3 using Microsoft.AspNet.Http;   4 using Microsoft.Extensions.DependencyInjection;   5 using Microsoft.Extensions.Configuration;    6 namespace FirstAppDemo {   7    public class Startup {   8       public Startup() {   9          var builder = new ConfigurationBuilder()  10             .AddJsonFile("AppSettings.json");  11          Configuration = builder.Build();  12       }   13       public IConfiguration Configuration { get; set; }   14        15       // This method gets called by the runtime.  16       // Use this method to add services to the container.  17       // For more information on how to configure your application,  18       // visit http://go.microsoft.com/fwlink/?LinkID=398940 19       public void ConfigureServices(IServiceCollection services) {  20       }   21        22       // This method gets called by the runtime.   23       // Use this method to configure the HTTP request pipeline. 24       public void Configure(IApplicationBuilder app) {  25          app.UseIISPlatformHandler();   26          app.UseDeveloperExceptionPage(); app.UseRuntimeInfoPage();  27          app.UseStaticFiles();  28           29          app.Run(async (context) => {  30             throw new System.Exception("Throw Exception");  31             var msg = Configuration["message"];  32             await context.Response.WriteAsync(msg);  33          });  34       }   35          36       // Entry point for the application. 37       public static void Main(string[] args) => WebApplication.Run<Startup>(args);  38    }  39 }</pre> <p>除非你通过传入一些不同的配置参数来覆盖选项,否则静态文件会对于一个给定的请求看作是请求路径。这个请求路径是相对于文件系统。</p> <ul class=" list-paddingleft-2"> <li><p>如果静态文件根据url找到一个文件,它将直接返回该文件,而不调用下一个块中间件。</p></li> <li><p>如果没有找到匹配的文件,那么它会继续执行下一个块中间件。</p></li> </ul> <p>让我们保存Startup.cs文件并刷新浏览器。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/315d89c3796749d419a682e7ec51873a-6.jpg" class="lazy" alt=""></p> <p>你现在可以看到index.html文件。你放置在wwwroot文件夹下任何地方的任何JavaScript文件、CSS文件或者HTML文件,您都能够在Asp.Net Core中直接当静态文件使用。</p> <ul class=" list-paddingleft-2"> <li><p>在如果你想 让index.html作为您的默认文件,IIS一直有这种功能。</p></li> <li><p>你可以给 IIS 一个默认文件列表。如果有人访问根目录,在这种情况下,如果 IIS 找到命名为 index.html的文件,它就会自动将该文件返回给客户端。</p></li> <li><p>让我们现在开始进行少量更改。首先,我们需要删除强制的错误,然后添加另一块的中间件,这就是 UseDefaultFiles。以下是配置方法的实现。</p></li> <li> <p class="cnblogs_code"><br></p> <pre class="brush:php;toolbar:false"> 1 / This method gets called by the runtime.    2 // Use this method to configure the HTTP request pipeline.  3 public void Configure(IApplicationBuilder app)  {   4    app.UseIISPlatformHandler();    5    app.UseDeveloperExceptionPage();   6      7    app.UseRuntimeInfoPage();    8    app.UseDefaultFiles();   9    app.UseStaticFiles();   10     11    app.Run(async (context) => {  12       var msg = Configuration["message"];  13       await context.Response.WriteAsync(msg);  14    });   15 }</pre> <p> </p> </li> </ul> <p> </p> <ul class=" list-paddingleft-2"> <li><p>这段中间件将监听传入的请求,如果请求是根目录,就查看是否有匹配的默认文件。</p></li> <li><p>您可以覆盖这个中间件的选项来告诉它如何匹配默认文件,但index.html是默认情况下的一个默认的文件。</p></li> </ul> <p>让我们保存 Startup.cs 文件并将您的浏览器转到 web 应用程序的根目录。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/315d89c3796749d419a682e7ec51873a-7.jpg" class="lazy" alt=""></p> <p>你现在可以看到index.html是默认文件。你安装中间件的顺序是很重要的,因为如果你将UseDefaultFiles放置在UseStaticFiles之后,你将可能不会得到相同的结果。</p> <p>如果你想要使用UseDefaultFiles和UseStaticFiles中间件,你可以使用另一个中间件Microsoft.aspnet.staticfiles,它也是NuGet包,它是一个服务器中间件。这本质上是以正确的顺序包含了默认文件和静态文件。</p> <p class="cnblogs_code"><br></p> <pre class="brush:php;toolbar:false"> 1 // This method gets called by the runtime.    2 // Use this method to configure the HTTP request pipeline.  3 public void Configure(IApplicationBuilder app) {   4    app.UseIISPlatformHandler();    5    app.UseDeveloperExceptionPage();   6      7    app.UseRuntimeInfoPage();    8    app. UseFileServer();    9     10    app.Run(async (context) => {  11       var msg = Configuration["message"];  12       await context.Response.WriteAsync(msg);  13    });  14 }</pre> <p> </p> <p> </p> <p>让我们再一次保存 Startup.cs 文件。一旦你刷新浏览器,你将看到相同的结果,如下面的屏幕快照所示。</p> <p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/b33e085c39ca50d6c54911a15965303c-8.jpg" class="lazy" alt=""></p>

以上是asp.net core实例教程之异常处理与静态文件教程的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何在 Windows 11 中启用 Core Isolation 的内存完整性功能如何在 Windows 11 中启用 Core Isolation 的内存完整性功能May 10, 2023 pm 11:49 PM

Microsoft的Windows112022Update(22H2)默认启用CoreIsolation的内存完整性保护。但是,如果您运行的是旧版本的操作系统,例如Windows112022Update(22H1),则需要手动打开此功能。在Windows11中开启CoreIsolation的内存完整性功能对于不了解核心隔离的用户,这是一个安全过程,旨在通过将Windows上的基本核心活动隔离在内存中来保护它们免受恶意程序的侵害。该进程与内存完整性功能相结合,可确保

电脑core是什么意思电脑core是什么意思Sep 05, 2022 am 11:24 AM

电脑中core有两种意思:1、核心,也即内核,是CPU最重要的组成部分,CPU所有的计算、接受存储命令、处理数据都由核心执行;2、酷睿,core是英特尔的处理器名称,酷睿是英特尔公司继奔腾处理器之后推出的处理器品牌,目前已经发布了十二代酷睿处理器。

如何修复 Windows 11 / 10 中的处理器热跳闸错误 [修复]如何修复 Windows 11 / 10 中的处理器热跳闸错误 [修复]Apr 17, 2023 am 08:13 AM

大多数设备(例如笔记本电脑和台式机)长期被年轻游戏玩家和编码人员频繁使用。由于应用程序过载,系统有时会挂起。这使用户被迫关闭他们的系统。这主要发生在安装和玩重度游戏的玩家身上。当系统在强制关闭后尝试启动时,它会在黑屏上抛出一个错误,如下所示:以下是在此引导期间检测到的警告。这些可以在事件日志页面的设置中查看。警告:处理器热跳闸。按任意键继续。..当台式机或笔记本电脑的处理器温度超过其阈值温度时,总是会抛出这些类型的警告消息。下面列出了在Windows系统上发生这种情况的原因。许多繁重的应用程序在

PHP中的错误处理机制是什么?PHP中的错误处理机制是什么?May 12, 2023 pm 07:31 PM

PHP是一种流行而强大的服务器端编程语言,可以用来开发各种Web应用程序。就像其他编程语言一样,PHP也有可能会出现错误和异常。这些错误和异常可能由各种原因引起,如程序错误、服务器错误、用户输入错误等等。为了确保程序的运行稳定性和可靠性,PHP提供了一套完整的错误处理机制。PHP错误处理机制的基本思想是:当发生错误时,程序会停止执行并输出一条错误消息。我们可

Go语言框架开发中的异常处理与错误码设计Go语言框架开发中的异常处理与错误码设计Jun 05, 2023 pm 09:21 PM

随着互联网技术的不断发展,越来越多的企业开始使用Go语言进行开发。Go语言以其高效、稳定、易用的特点备受开发者的青睐。在企业级开发中,框架是不可或缺的一部分。因此,本文将介绍在Go语言框架开发中,如何进行异常处理与错误码设计。一、什么是异常处理在计算机编程中,异常处理指的是当程序运行过程中出现异常情况时,程序必须采取的措施。这些异常情况包括硬件故障、软件缺陷

Swoole实现高效的异常处理机制Swoole实现高效的异常处理机制Jun 14, 2023 pm 03:54 PM

随着Web开发技术的不断发展,开发人员也面临着越来越复杂的业务场景和需求。例如,高并发、大量请求处理、异步任务处理等问题都需要使用高性能的工具和技术来解决。在这种情况下,Swoole成为了一种越来越重要的解决方案。Swoole是一种基于PHP语言的高性能异步网络通信框架。它提供了一些非常有用的功能和特性,例如异步IO、协程、进程管理、定时器和异步客户端,使得

如何在ThinkPHP6中进行异常处理?如何在ThinkPHP6中进行异常处理?Jun 12, 2023 am 08:54 AM

ThinkPHP6是一款非常流行的PHP框架,已经被广泛应用于各种Web应用程序中。在开发过程中,可能会遇到各种异常,如果不及时处理,就会导致程序无法正常运行。本文将介绍如何在ThinkPHP6中进行异常处理,保证Web应用程序的稳定性和可靠性。异常处理的概念异常处理是指在程序正常执行过程中,遇到错误或意外情况时所进行的处理。在开发Web应用程序时,常常会发

PHP实现数据库集群异常处理的方法PHP实现数据库集群异常处理的方法May 15, 2023 pm 02:40 PM

随着互联网的不断发展,越来越多的企业和组织开始规划数据库集群来满足其数据处理需求。数据库集群可能包含数百甚至数千个节点,因此在节点之间确保数据同步和协调非常重要。在该环境下,存在着很多的异常情况,如单节点故障,网络分区,数据同步错误等,并且需要实现实时检测和处理。本文将介绍如何使用PHP实现数据库集群异常处理。数据库集群的概述在数据库集群中,一个单独的

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),