ASP.NET Core: Định cấu hình ứng dụng ASP.NET Core cho App Service Azure đối với hosting platform là Windows


Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Ghi chú

Đối với ASP.NET trong .NET Framework, hãy xem Định cấu hình ứng dụng ASP.NET cho App Service Azure. Nếu ứng dụng ASP.NET Core của bạn chạy trong bộ chứa Windows hoặc Linux tùy chỉnh, hãy xem Định cấu hình bộ chứa tùy chỉnh cho App Service Azure.

Các ứng dụng ASP.NET Core phải được triển khai cho App Service Azure dưới dạng tệp nhị phân đã biên dịch. Công cụ xuất bản Visual Studio xây dựng giải pháp rồi triển khai trực tiếp các tệp nhị phân đã biên dịch, trong khi công cụ triển khai App Service triển khai kho lưu trữ mã trước rồi mới biên dịch các tệp nhị phân.

Hướng dẫn này cung cấp các khái niệm và hướng dẫn chính cho các nhà phát triển ASP.NET Core. Nếu bạn chưa bao giờ sử dụng App Service Azure, trước tiên hãy làm theo hướng dẫn khởi động nhanh ASP.NET Core và ASP.NET Core với Cơ sở dữ liệu SQL.

Hiển thị các phiên bản thời gian chạy .NET Core được hỗ trợ

Trong App Service, các phiên bản Windows đã cài đặt tất cả các phiên bản .NET Core được hỗ trợ. Để hiển thị các phiên bản SDK và thời gian chạy .NET Core có sẵn cho bạn, hãy điều hướng đến https://<app-name>.scm.azurewebsites.net/DebugConsole và chạy lệnh sau trong bảng điều khiển dựa trên trình duyệt:

dotnet --info

Đặt phiên bản .NET Core

Đặt framework đích trong tệp dự án cho dự án ASP.NET Core của bạn. Để biết thêm thông tin, hãy xem Chọn phiên bản .NET Core để sử dụng trong tài liệu .NET Core.

Truy cập các biến môi trường

Trong App Service, bạn có thể đặt cài đặt ứng dụng bên ngoài mã ứng dụng của mình. Sau đó, bạn có thể truy cập chúng trong bất kỳ lớp nào bằng cách sử dụng mẫu dependency injection ASP.NET Core tiêu chuẩn:

using Microsoft.Extensions.Configuration;

namespace SomeNamespace 
{
    public class SomeClass
    {
        private IConfiguration _configuration;
    
        public SomeClass(IConfiguration configuration)
        {
            _configuration = configuration;
        }
    
        public SomeMethod()
        {
            // retrieve nested App Service app setting
            var myHierarchicalConfig = _configuration["My:Hierarchical:Config:Data"];
            // retrieve App Service connection string
            var myConnString = _configuration.GetConnectionString("MyDbConnection");
        }
    }
}

Ví dụ: nếu bạn định cấu hình cài đặt ứng dụng có cùng tên trong App Service và trong appsettings.json, thì giá trị App Service sẽ được ưu tiên hơn giá trị appsettings.json. Giá trị appsettings.json cục bộ cho phép bạn gỡ lỗi ứng dụng cục bộ nhưng giá trị App Service cho phép bạn chạy ứng dụng trong sản xuất với cài đặt sản xuất. Chuỗi kết nối hoạt động theo cách tương tự. Bằng cách này, bạn có thể giữ bí mật ứng dụng của mình bên ngoài kho lưu trữ mã và truy cập các giá trị thích hợp mà không cần thay đổi mã của bạn.

Ghi chú

Lưu ý rằng dữ liệu cấu hình phân cấp trong appsettings.json được truy cập bằng cách sử dụng dấu phân cách : tiêu chuẩn cho .NET Core. Để ghi đè cài đặt cấu hình phân cấp cụ thể trong App Service, hãy đặt tên cài đặt ứng dụng có cùng định dạng được phân tách trong khóa. bạn có thể chạy ví dụ sau trong Cloud Shell:

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings My:Hierarchical:Config:Data="some value"

Triển khai các giải pháp đa dự án

Khi một giải pháp Visual Studio bao gồm nhiều dự án, quy trình xuất bản Visual Studio đã bao gồm việc chọn dự án để triển khai. Khi bạn triển khai tới công cụ triển khai App Service, chẳng hạn như với Git hoặc với triển khai ZIP có bật tự động hóa bản dựng, công cụ triển khai App Service sẽ chọn Web Site hoặc Web Application Project đầu tiên mà nó tìm thấy làm ứng dụng App Service. Bạn có thể chỉ định App Service dự án nào sẽ sử dụng bằng cách chỉ định cài đặt ứng dụng PROJECT. Ví dụ: chạy phần sau trong Cloud Shell:

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

Truy cập nhật ký chẩn đoán

ASP.NET Core cung cấp trình cung cấp ghi nhật ký tích hợp cho App Service. Trong Program.cs của dự án, hãy thêm nhà cung cấp vào ứng dụng của bạn thông qua phương thức mở rộng ConfigureLogging, như minh họa trong ví dụ sau:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.AddAzureWebAppDiagnostics();
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Sau đó, bạn có thể định cấu hình và tạo nhật ký bằng mẫu .NET Core tiêu chuẩn.

Để truy cập nhật ký bảng điều khiển được tạo từ bên trong mã ứng dụng của bạn trong App Service, hãy bật ghi nhật ký chẩn đoán bằng cách chạy lệnh sau trong Cloud Shell:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

Các giá trị có thể cho là --levelErrorWarningInfo, và Verbose. Mỗi cấp độ tiếp theo bao gồm cấp độ trước đó. Ví dụ: Error chỉ bao gồm các thông báo lỗi và Verbosebao gồm tất cả các thông báo.

Sau khi bật ghi nhật ký chẩn đoán, hãy chạy lệnh sau để xem luồng nhật ký:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Nếu bạn không thấy nhật ký bảng điều khiển ngay lập tức, hãy kiểm tra lại sau 30 giây.

Ghi chú

Bạn cũng có thể kiểm tra các tệp nhật ký từ trình duyệt tại https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Để dừng truyền phát nhật ký bất kỳ lúc nào, hãy nhập CtrlC.

Để biết thêm thông tin về khắc phục sự cố ứng dụng ASP.NET Core trong App Service, hãy xem Khắc phục sự cố ASP.NET Core trên App Service Azure và IIS

Nhận trang ngoại lệ chi tiết

Khi ứng dụng ASP.NET Core của bạn tạo ra một ngoại lệ trong trình gỡ lỗi Visual Studio, trình duyệt sẽ hiển thị một trang ngoại lệ chi tiết, nhưng trong App Service, trang đó được thay thế bằng một thông báo lỗi chung HTTP 500 hoặc An error occured while processing your request.. Để hiển thị trang ngoại lệ chi tiết trong App Service, hãy thêm cài đặt ứng dụng ASPNETCORE_ENVIRONMENT vào ứng dụng của bạn bằng cách chạy lệnh sau trong Cloud Shell.

az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings ASPNETCORE_ENVIRONMENT="Development"

Phát hiện phiên HTTPS

Trong App Service, việc chấm dứt TLS/SSL xảy ra tại bộ cân bằng tải mạng, vì vậy, tất cả các yêu cầu HTTPS đều đến được ứng dụng của bạn dưới dạng các yêu cầu HTTP không được mã hóa. Nếu logic ứng dụng của bạn cần biết liệu các yêu cầu của người dùng có được mã hóa hay không, hãy định cấu hình Forwarded Headers Middleware trong Startup.cs:

  • Định cấu hình middleware với ForwardedHeadersOptions để chuyển tiếp các header X-Forwarded-For và X-Forwarded-Proto ở định dạng Startup.ConfigureServices.
  • Thêm dải địa chỉ IP riêng vào các mạng đã biết để phần mềm trung gian có thể tin tưởng bộ cân bằng tải App Service.
  • Gọi phương thức UseForwardedHeadersStartup.Configure trước khi gọi middleware khác.

Đặt cả ba yếu tố lại với nhau, thì code của bạn trông giống như ví dụ sau:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.Configure<ForwardedHeadersOptions>(options =>
    {
        options.ForwardedHeaders =
            ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
        // These three subnets encapsulate the applicable Azure subnets. At the moment, it's not possible to narrow it down further.
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:10.0.0.0"), 104));
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:192.168.0.0"), 112));
        options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:172.16.0.0"), 108));
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseForwardedHeaders();

    ...

    app.UseMvc();
}

Để biết thêm thông tin, hãy xem Định cấu hình ASP.NET Core để hoạt động với máy chủ proxy và bộ cân bằng tải.

Bước tiếp theo

Hướng dẫn: Ứng dụng ASP.NET Core với Cơ sở dữ liệu SQL

Hoặc, xem tài nguyên bổ sung sau:

Biến môi trường và tham chiếu cài đặt ứng dụng

Nguồn: learn.microsoft.com
» Tiếp: Định cấu hình ứng dụng ASP.NET Core cho App Service Azure đối với hosting platform là Linux
« Trước: Triển khai ứng dụng Cơ sở dữ liệu ASP.NET Core và Azure SQL cho App Service Azure
Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!