最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用VS2022在ASP.NET?Core中構(gòu)建輕量級服務(wù)

 更新時(shí)間:2021年12月08日 09:49:32   作者:編程寶庫  
本文詳細(xì)講解了使用VS2022在ASP.NET?Core中構(gòu)建輕量級服務(wù)的方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在 ASP.NET Core 中處理 Web 應(yīng)用程序時(shí),我們可能經(jīng)常希望構(gòu)建輕量級服務(wù),也就是沒有模板或控制器類的服務(wù)。

輕量級服務(wù)可以降低資源消耗,而且能夠提高性能。我們可以在 Startup 或 Program 類中創(chuàng)建這些輕量級服務(wù)或 API。

1. 使用 VS2022 創(chuàng)建 ASP.NET Core 項(xiàng)目

我們在 Visual Studio 2022 中創(chuàng)建一個(gè) ASP.NET Core 項(xiàng)目。按照以下步驟在 Visual Studio 2022 中創(chuàng)建一個(gè)新的 ASP.NET Core Web API 6 項(xiàng)目。

  • 1) 啟動(dòng) Visual Studio 2022 IDE。
  • 2) 單擊 “Create new project”。
  • 3) 在 “Create new project” 窗口中,從顯示的模板列表中選擇 “ASP.NET Core Web API”。
  • 4) 點(diǎn)擊下一步。
  • 5) 在 “Configure your new project” 窗口中,指定新項(xiàng)目的名稱和位置。
  • 6) 根據(jù)您的偏好,可選擇選中 “Place solution and project in the same directory” 復(fù)選框。
  • 7) 點(diǎn)擊下一步。
  • 8) 在接下來顯示的 “Additional Information” 窗口中,從頂部的下拉列表中選擇 .NET 6.0 作為目標(biāo)框架。將 “Authentication Type” 保留為 “None”(默認(rèn))。
  • 9) 確保未選中 “Enable Docker,”、“Configure for HTTPS” 和 “Enable Open API Support” 復(fù)選框,因?yàn)槲覀儾粫?huì)在此處使用任何這些功能。您也可以選擇取消選中 “Use controllers(取消選中以使用最少的 API)” 復(fù)選框,因?yàn)槲覀儗?chuàng)建自己的控制器。
  • 10) 單擊創(chuàng)建。

這將在 Visual Studio 2022 中創(chuàng)建一個(gè)新的 ASP.NET Core 6 Web API 項(xiàng)目。我們將在本文的后續(xù)部分中使用該項(xiàng)目,來說明如何使用輕量級服務(wù)。

2. 在 ASP.NET Core 中啟用一個(gè)輕量級的服務(wù)

由于我們將構(gòu)建不需要控制器的輕量級服務(wù),所以應(yīng)該刪除 Controllers solution 文件夾和默認(rèn)創(chuàng)建的任何模型類。

接下來,打開 Properties solution 文件夾下的 launchSettings.json 文件,刪除或注釋掉 launchUrl 鍵值對,如下面給出的代碼所示。

其中,launchUrl 是指應(yīng)用程序的主機(jī)。當(dāng)應(yīng)用程序啟動(dòng)時(shí),launchURL 中指定的 URL 用于啟動(dòng)應(yīng)用程序。

如果 URL 錯(cuò)誤或不存在,應(yīng)用程序?qū)⒃趩?dòng)時(shí)拋出錯(cuò)誤。通過刪除 launchUrl 或?qū)⑵渥⑨尩?,我們可以確保應(yīng)用程序不使用默認(rèn)的 launchUrl 來啟動(dòng)應(yīng)用程序,從而避免任何錯(cuò)誤。一旦 launchUrl 被刪除,應(yīng)用程序?qū)⒒氐?5000 端口。

"profiles": {
    "Light_Weight_Services": {
        "commandName": "Project",
        "dotnetRunMessages": true,
        "launchBrowser": true,
        //"launchUrl": "",
        "applicationUrl": "http://localhost:5000",
        "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
        }
    },
    "IIS Express": {
        "commandName": "IISExpress",
        "launchBrowser": true,
        //"launchUrl": "",
        "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
        }
    }

3. 在 ASP.NET Core 中使用 IEndpointConventionBuilder 擴(kuò)展方法

我們可以利用 IEndpointConventionBuilder 接口的一些擴(kuò)展方法來映射請求。

以下是這些擴(kuò)展方法的列表:

  • MapGet
  • MapPost
  • MapDelete
  • MapPut
  • MapRazorPages
  • MapControllers
  • MapHub
  • MapGrpcServices

MapGet、MapPost、MapDelete 和 MapPut 方法用于將請求委托連接到路由系統(tǒng)。MapRazorPages 用于 RazorPages,MapControllers 用于 Controllers,MapHub 用于 SignalR,MapGrpcService 用于 gRPC。

以下代碼說明了怎么使用 MapGet 創(chuàng)建 HTTP Get 端點(diǎn)。

endpoints.MapGet("/", async context =>
{
     await context.Response.WriteAsync("Hello World!");
});

我們創(chuàng)建一個(gè)名為 Author 的 C# 文件,包含以下代碼:

public class Author
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

創(chuàng)建一個(gè) Author 的只讀列表,并填充一些數(shù)據(jù),如下所示:

private readonly List<Author> _authors;
    public Startup(IConfiguration configuration)
    {
        _authors = new List<Author>
        {
            new Author
            {
                Id = 1,
                FirstName = "Joydip",
                LastName = "Kanjilal"
            },
            new Author
            {
                Id = 2,
                FirstName = "Steve",
                LastName = "Smith"
            },
            new Author
            {
                Id = 3,
                FirstName = "Julie",
                LastName = "Lerman"
            }
        };
        Configuration = configuration;
    }

我們可以使用以下代碼創(chuàng)建另一個(gè)端點(diǎn),并以 JSON 格式返回作者列表。

endpoints.MapGet("/authors", async context =>
{
        var authors = _authors == null ? new List<Author>() : _authors;
        var response = JsonSerializer.Serialize(authors);
        await context.Response.WriteAsync(response);
});

4. 在 ASP.NET Core 中使用輕量級服務(wù)檢索記錄

要根據(jù) Id 檢索特定記錄,我們可以編寫以下代碼:

endpoints.MapGet("/authors/{id:int}", async context =>
{
    var id = int.Parse((string)context.Request.RouteValues["id"]);
    var author = _authors.Find(x=> x.Id == id);
    var response = JsonSerializer.Serialize(author);
    await context.Response.WriteAsync(response);
});

5. 在 ASP.NET Core 中使用輕量級服務(wù)創(chuàng)建記錄

要使用 HTTP Post 添加數(shù)據(jù),我們可以利用 MapPost 擴(kuò)展方法,如下所示:

endpoints.MapPost("/", async context =>
{
    var author = await context.Request.ReadFromJsonAsync<Author>();
    _authors.Add(author);
    var response = JsonSerializer.Serialize(author);
    await context.Response.WriteAsync(response);
});

6. 在 ASP.NET Core 中使用輕量級服務(wù)刪除記錄

要?jiǎng)h除數(shù)據(jù),我們可以利用 MapDelete 擴(kuò)展方法,如下所示:

endpoints.MapDelete("/authors/{id:int}", async context =>
{
    var id = int.Parse((string)context.Request.RouteValues["id"]);
    var author = _authors.Find(x => x.Id == id);
    _authors.Remove(author);
    var response = JsonSerializer.Serialize(_authors);
    await context.Response.WriteAsync(response);
});

7. ASP.NET Core 中輕量級服務(wù)的配置方法

下面是 Startup 類的 Configure 方法的完整源碼:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGet("/", async context =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
        endpoints.MapGet("/authors", async context =>
        {
            var authors = _authors == null ? new List<Author>() : _authors;
            var response = JsonSerializer.Serialize(authors);
            await context.Response.WriteAsync(response);
        });
        endpoints.MapGet("/authors/{id:int}", async context =>
        {
            var id = int.Parse((string)context.Request.RouteValues["id"]);
            var author = _authors.Find(x=> x.Id == id);
            var response = JsonSerializer.Serialize(author);
            await context.Response.WriteAsync(response);
        });
        endpoints.MapPost("/", async context =>
        {
            var author = await context.Request.ReadFromJsonAsync<Author>();
            _authors.Add(author);
            var response = JsonSerializer.Serialize(author);
            await context.Response.WriteAsync(response);
        });
        endpoints.MapDelete("/authors/{id:int}", async context =>
        {
            var id = int.Parse((string)context.Request.RouteValues["id"]);
            var author = _authors.Find(x => x.Id == id);
            _authors.Remove(author);
            var response = JsonSerializer.Serialize(_authors);
            await context.Response.WriteAsync(response);
        });
    });
}

8. 在 ASP.NET Core 的 Program 類中創(chuàng)建輕量級服務(wù)

在 ASP.NET 6 中還有另一種創(chuàng)建輕量級服務(wù)的方法。我們創(chuàng)建新的 ASP.NET Core 6 空項(xiàng)目時(shí),默認(rèn)情況下不會(huì)創(chuàng)建 Startup.cs 文件。因此,我們可以在 Program.cs 文件中編寫代碼,創(chuàng)建輕量級服務(wù)。

下面的例子說明如何執(zhí)行此操作:

app.MapGet("/", () => "Hello World!");
app.MapDelete("/{id}", (Func<int, bool>)((id) => {
    // 刪除記錄代碼
    return true;
}));
    app.MapPost("/", (Func<Author, bool>)((author) => {
    // 添加記錄代碼
    return true;
}));
app.Run();

輕量級服務(wù)或 API 沒有模板,也不需要控制器類來創(chuàng)建它們。

我們可以在 Startup 或 Program 類中創(chuàng)建此類服務(wù)。

如果我們要在輕量級服務(wù)中實(shí)現(xiàn)授權(quán),可以利用 IEndpointConventionBuilder 接口的 RequireAuthorization 擴(kuò)展方法。

參考資料:

?編程寶庫???

?C#編程?

以上所述是小編給大家介紹的使用VS2022在ASP.NET Core中構(gòu)建輕量級服務(wù),希望對大家有所幫助。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解ASP.NET頁面生命周期事件

    詳解ASP.NET頁面生命周期事件

    這篇文章介紹了ASP.NET頁面生命周期事件,有需要的朋友可以參考一下
    2013-07-07
  • VS2019下opencv4.1.2配置圖文教程(永久配置)

    VS2019下opencv4.1.2配置圖文教程(永久配置)

    這篇文章主要介紹了VS2019下opencv4.1.2配置圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼

    asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼

    經(jīng)常要寫一些.net的程序,對于數(shù)據(jù)庫的防注入要求要比較高。這時(shí)我從網(wǎng)上搜了一些代碼。查看了一下主要是通過HTTPModel來進(jìn)行對客戶端轉(zhuǎn)過來的數(shù)據(jù)進(jìn)行處理。
    2009-12-12
  • .NET基礎(chǔ)之自定義泛型分析

    .NET基礎(chǔ)之自定義泛型分析

    這篇文章主要介紹了.NET基礎(chǔ)之自定義泛型,實(shí)例分析了定義泛型類、default關(guān)鍵字、約束類型等的用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • .Net Core解決WebAPI中返回時(shí)間格式帶T的問題

    .Net Core解決WebAPI中返回時(shí)間格式帶T的問題

    本文主要介紹了.Net Core解決WebAPI中返回時(shí)間格式帶T的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • .net core部署到windows服務(wù)上的完整步驟

    .net core部署到windows服務(wù)上的完整步驟

    這篇文章主要給大家介紹了關(guān)于.net core部署到windows服務(wù)上的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • .Net?Core跨平臺應(yīng)用開發(fā)串口篇HelloArm

    .Net?Core跨平臺應(yīng)用開發(fā)串口篇HelloArm

    這篇文章介紹了.Net?Core跨平臺應(yīng)用開發(fā)串口篇HelloArm,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • ASP.NET Web Page應(yīng)用深入探討

    ASP.NET Web Page應(yīng)用深入探討

    這些內(nèi)容是我在學(xué)習(xí)ASP.Net的時(shí)候?qū)age研究的一些心得,具體的細(xì)節(jié)沒有很詳細(xì)的探討,更多的內(nèi)容請大家參考MSDN,但是我舉了一些初學(xué)者常犯的錯(cuò)誤和出現(xiàn)錯(cuò)誤的原因,希望可以給大家?guī)韱l(fā)。
    2009-08-08
  • 基于.net standard 的動(dòng)態(tài)編譯實(shí)現(xiàn)代碼

    基于.net standard 的動(dòng)態(tài)編譯實(shí)現(xiàn)代碼

    這篇文章主要介紹了基于.net standard 的動(dòng)態(tài)編譯實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

    ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄

    Gridview控件中并沒有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。
    2008-11-11

最新評論

宜丰县| 乐山市| 莒南县| 巴林右旗| 巴里| 桑植县| 桃园市| 正镶白旗| 浦江县| 利川市| 边坝县| 墨玉县| 阿拉善右旗| 红桥区| 阜新市| 兴隆县| 正镶白旗| 略阳县| 正安县| 开江县| 九寨沟县| 渭南市| 延川县| 景德镇市| 昌乐县| 建昌县| 岐山县| 兴仁县| 垦利县| 万全县| 自治县| 阳新县| 偏关县| 天峻县| 舒城县| 泽州县| 临武县| 金阳县| 新平| 宝丰县| 剑阁县|