目錄
Asp.Net Core-異常處理
Asp.Net Core 靜態檔案
案例
首頁 後端開發 C#.Net教程 asp.net core實例教學之異常處理與靜態檔案教學課程

asp.net core實例教學之異常處理與靜態檔案教學課程

Jun 16, 2017 am 10:08 AM

<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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div> <p> </p> <p> </p> <p># </p> <p>它只會拋出一個非常通用的例外訊息。儲存Startup.cs頁面並執行您的應用程式。 </p> <p><img src="/static/imghw/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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div> <p> </p> <p> </p> <p>這個中間件與其他的有點不同,其他中間件通常監聽傳入的請求並對請求做一些響應。 </p> <p>UseDeveloperExceptionPage不會如此在意傳入的請求在之後的管道會發生什麼事。 </p> <p>它只是呼叫下一個中間件,然後再等待,看看管道中是否會出現異常,如果有異常,這塊中間件會給你一個關於該異常的錯誤頁面。 </p> <p>現在讓我們再次運行應用程式。將會產生一個如下面的螢幕截圖所示的輸出。 </p> <p><img src="/static/imghw/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/imghw/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/imghw/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"></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">##元</code> <code class="html color1">字元集</code><code class="html plain">=</code>##"utf-8"<code class="html string"> </code>/> <code class="html plain"></code></p> <p class="line number5 index4 alt2">      <code class="html spaces"></code>title<code class="html keyword"></code>>歡迎使用 ASP.NET Core<code class="html plain"></code>#title <code class="html keyword"></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"></code>> <code class="html plain"></code></p> <p class="line number7 index6 alt2">   <code class="html spaces"></code>body<code class="html keyword"></code>> <code class="html plain"></code></p> <p class="line number8 index7 alt1">      <code class="html spaces"></code>你好,世界! 此訊息來自我們的第一個靜態 HTML 檔案。  <code class="html plain"></code></p> <p class="line number9 index8 alt2">   <code class="html spaces"></code><code class="html plain"></code>body<code class="html keyword"></code>> <code class="html plain"></code></p> <p class="line number10 index9 alt1"><code class="html plain"></code>html<code class="html keyword"></code>><code class="html plain"></code></p> </td> </tr></tbody> <p>当您运行应用程序并在浏览器中输入index.html时,您将看到app.Run中间件将抛出一个异常,因为目前在我们的应用程序中什么都没有。</p> <p><img src="/static/imghw/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/imghw/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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div> <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/imghw/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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div> <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/imghw/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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">登入後複製</div></div> <p> </p> <p> </p> <p>让我们再一次保存 Startup.cs 文件。一旦你刷新浏览器,你将看到相同的结果,如下面的屏幕快照所示。</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/001/506/b33e085c39ca50d6c54911a15965303c-8.jpg" class="lazy" alt=""></p> </table>

以上是asp.net core實例教學之異常處理與靜態檔案教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24
C++ 函式異常與多執行緒:並發環境下的錯誤處理 C++ 函式異常與多執行緒:並發環境下的錯誤處理 May 04, 2024 pm 04:42 PM

C++中函數異常處理對於多執行緒環境特別重要,以確保執行緒安全性和資料完整性。透過try-catch語句,可以在出現異常時擷取和處理特定類型的異常,以防止程式崩潰或資料損壞。

C++ 異常處理如何支援自訂錯誤處理例程? C++ 異常處理如何支援自訂錯誤處理例程? Jun 05, 2024 pm 12:13 PM

C++異常處理允許建立自訂錯誤處理例程,透過拋出異常並使用try-catch區塊捕捉異常來處理運行時錯誤。 1.建立一個派生自exception類別的自訂異常類別並覆寫what()方法;2.使用throw關鍵字拋出異常;3.使用try-catch區塊捕捉異常並指定可以處理的異常類型。

C++ Lambda 表達式如何進行異常處理? C++ Lambda 表達式如何進行異常處理? Jun 03, 2024 pm 03:01 PM

C++Lambda表達式中的異常處理沒有自己的作用域,預設不捕獲異常。要捕獲異常,可以使用Lambda表達式捕獲語法,它允許Lambda表達式捕獲其定義範圍內的變量,從而在try-catch區塊中進行異常處理。

Java函數中遞歸呼叫與異常處理有何關係? Java函數中遞歸呼叫與異常處理有何關係? May 03, 2024 pm 06:12 PM

遞歸呼叫中的異常處理:限制遞歸深度:防止堆疊溢位。使用異常處理:使用try-catch語句處理異常。尾遞歸優化:避免堆疊溢位。

您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? 您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? Apr 05, 2025 am 12:03 AM

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

PHP異常處理:透過異常追蹤了解系統行為 PHP異常處理:透過異常追蹤了解系統行為 Jun 05, 2024 pm 07:57 PM

PHP異常處理:透過異常追蹤了解系統行為異常是PHP用來處理錯誤的機制,由異常處理程序處理異常。異常類別Exception代表一般異常,而Throwable類別代表所有異常。使用throw關鍵字拋出異常,並使用try...catch語句定義異常處理程序。在實戰案例中,透過異常處理捕獲並處理calculate()函數可能拋出的DivisionByZeroError,確保應用程式在發生錯誤時也能優雅地失敗。

C++ 技術中的例外處理:如何在多執行緒環境中正確處理例外狀況? C++ 技術中的例外處理:如何在多執行緒環境中正確處理例外狀況? May 09, 2024 pm 12:36 PM

在多執行緒C++中,例外處理遵循以下原則:及時性、執行緒安全性和明確性。在實戰中,可以透過使用mutex或原子變數來確保異常處理程式碼線程安全。此外,還要考慮異常處理程式碼的重入性、效能和測試,以確保其在多執行緒環境中安全有效地運作。

C++ 技術中的異常處理:如何最佳化異常處理的效能? C++ 技術中的異常處理:如何最佳化異常處理的效能? May 09, 2024 am 10:39 AM

為了優化C++中的異常處理效能,可以實現以下四種技術:避免不必要的異常拋出。使用輕量級異常類別。優先考慮效率,設計只包含必要資訊的異常類別。利用編譯器選項實現最佳效能和穩定性平衡。

See all articles