Nguon: Microsoft Learn · .NET 8.0

IIS modules với ASP.NET Core

Nguồn: IIS modules with ASP.NET Core

Một số IIS module native và tất cả IIS managed module không thể xử lý các yêu cầu cho ứng dụng ASP.NET Core. Trong nhiều trường hợp, ASP.NET Core cung cấp giải pháp thay thế cho các kịch bản được giải quyết bởi các IIS module native và managed.

Native modules (module bản địa)

Bảng cho biết các IIS native module hoạt động với các ứng dụng ASP.NET Core và ASP.NET Core Module.

ModuleHoạt động với ứng dụng ASP.NET CoreTùy chọn ASP.NET Core
Anonymous Authentication AnonymousAuthenticationModule
Basic Authentication BasicAuthenticationModule
Client Certification Mapping Authentication CertificateMappingAuthenticationModule
CGI CgiModuleKhông
Configuration Validation ConfigurationValidationModule
HTTP Errors CustomErrorModuleKhôngStatus Code Pages Middleware
Custom Logging CustomLoggingModule
Default Document DefaultDocumentModuleKhôngDefault Files Middleware
Digest Authentication DigestAuthenticationModule
Directory Browsing DirectoryListingModuleKhôngDirectory Browsing Middleware
Dynamic Compression DynamicCompressionModuleResponse Compression Middleware
Failed Requests Tracing FailedRequestsTracingModuleASP.NET Core Logging
File Caching FileCacheModuleKhôngResponse Caching Middleware
HTTP Caching HttpCacheModuleKhôngResponse Caching Middleware
HTTP Logging HttpLoggingModuleASP.NET Core Logging
HTTP Redirection HttpRedirectionModuleURL Rewriting Middleware
HTTP Tracing TracingModule
IIS Client Certificate Mapping Authentication IISCertificateMappingAuthenticationModule
IP and Domain Restrictions IpRestrictionModule
ISAPI Filters IsapiFilterModuleMiddleware
ISAPI IsapiModuleMiddleware
Protocol Support ProtocolSupportModule
Request Filtering RequestFilteringModuleURL Rewriting Middleware IRule
Request Monitor RequestMonitorModule
URL RewritingRewriteModuleURL Rewriting Middleware
Server-Side Includes ServerSideIncludeModuleKhông
Static Compression StaticCompressionModuleKhôngResponse Compression Middleware
Static Content StaticFileModuleKhôngStatic File Middleware
Token Caching TokenCacheModule
URI Caching UriCacheModule
URL Authorization UrlAuthorizationModuleASP.NET Core Identity
WebDav WebDAVKhông
Windows Authentication WindowsAuthenticationModule

†Các kiểu match isFileisDirectory của URL Rewrite Module không hoạt động với các ứng dụng ASP.NET Core do các thay đổi trong cấu trúc thư mục.

Managed modules (module được quản lý)

Các managed module không hoạt động với các ứng dụng ASP.NET Core được host khi phiên bản .NET CLR của app pool được đặt thành No Managed Code. ASP.NET Core cung cấp các giải pháp middleware thay thế trong một số trường hợp.

ModuleTùy chọn ASP.NET Core
AnonymousIdentification
DefaultAuthentication
FileAuthorization
FormsAuthenticationCookie Authentication Middleware
OutputCacheResponse Caching Middleware
Profile
RoleManager
ScriptModule-4.0
SessionSession Middleware
UrlAuthorization
UrlMappingsModuleURL Rewriting Middleware
UrlRoutingModule-4.0ASP.NET Core Identity
WindowsAuthentication

Thay đổi ứng dụng trong IIS Manager

Khi sử dụng IIS Manager để cấu hình cài đặt, file web.config của ứng dụng sẽ bị thay đổi. Nếu triển khai ứng dụng và bao gồm web.config, bất kỳ thay đổi nào được thực hiện bằng IIS Manager sẽ bị ghi đè bởi file web.config đã triển khai. Nếu có thay đổi được thực hiện đối với file web.config của server, hãy sao chép ngay file web.config đã cập nhật trên server vào project cục bộ.

Vô hiệu hóa IIS modules

Nếu một IIS module được cấu hình ở cấp server mà cần vô hiệu hóa cho một ứng dụng, có thể thêm vào file web.config của ứng dụng để vô hiệu hóa module. Hoặc để module ở nguyên và hủy kích hoạt nó bằng cài đặt cấu hình (nếu có) hoặc xóa module khỏi ứng dụng.

Vô hiệu hóa module

Nhiều module cung cấp cài đặt cấu hình cho phép chúng bị vô hiệu hóa mà không cần xóa module khỏi ứng dụng. Đây là cách đơn giản và nhanh nhất để hủy kích hoạt module. Ví dụ, HTTP Redirection Module có thể bị vô hiệu hóa bằng phần tử <httpRedirect> trong web.config:

xml
<configuration>
  <system.webServer>
    <httpRedirect enabled="false" />
  </system.webServer>
</configuration>

Để biết thêm thông tin về vô hiệu hóa module bằng cài đặt cấu hình, hãy theo các liên kết trong phần Child Elements của IIS &lt;system.webServer&gt;.

Xóa module

Nếu chọn xóa module bằng cài đặt trong web.config, trước tiên hãy mở khóa module và mở khóa phần <modules> của web.config:

  1. Mở khóa module ở cấp server. Chọn IIS server trong sidebar Connections của IIS Manager. Mở Modules trong khu vực IIS. Chọn module trong danh sách. Trong sidebar Actions bên phải, chọn Unlock. Nếu entry hành động cho module xuất hiện là Lock, module đã được mở khóa và không cần hành động nào. Mở khóa nhiều module nếu bạn dự định xóa chúng khỏi web.config.
  2. Triển khai ứng dụng không có phần <modules> trong web.config. Nếu ứng dụng được triển khai với web.config chứa phần <modules> mà không có mở khóa phần đó trước trong IIS Manager, Configuration Manager sẽ báo lỗi khi cố gắng mở khóa phần đó. Do đó, hãy triển khai ứng dụng không có phần <modules>.
  3. Mở khóa phần <modules> của web.config. Trong sidebar Connections, chọn website trong Sites. Trong khu vực Management, mở Configuration Editor. Dùng các điều khiển điều hướng để chọn phần system.webServer/modules. Trong sidebar Actions bên phải, chọn Unlock phần đó.
  4. Thêm phần <modules> vào file web.config cục bộ của ứng dụng với phần tử <remove> để xóa module khỏi ứng dụng. Thêm nhiều phần tử <remove> để xóa nhiều module. Nếu thay đổi web.config được thực hiện trên server, hãy ngay lập tức thực hiện các thay đổi tương tự cho file web.config của project cục bộ. Xóa module bằng cách này không ảnh hưởng đến việc sử dụng module với các ứng dụng khác trên server.

``xml <configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration> ``

Để thêm hoặc xóa module cho IIS Express bằng web.config, hãy chỉnh sửa applicationHost.config để mở khóa phần <modules>:

  1. Mở {APPLICATION ROOT}\.vs\config\applicationhost.config.
  2. Tìm phần tử <section> cho IIS module và thay đổi overrideModeDefault từ Deny thành Allow:

``xml <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" /> ``

  1. Tìm phần <location path="" overrideMode="Allow"><system.webServer><modules>. Đối với bất kỳ module nào bạn muốn xóa, hãy đặt lockItem từ true thành false. Trong ví dụ sau, CGI Module được mở khóa:

``xml <add name="CgiModule" lockItem="false" /> ``

  1. Sau khi phần <modules> và các module riêng lẻ đã được mở khóa, bạn có thể thêm hoặc xóa IIS module bằng file web.config của ứng dụng để chạy ứng dụng trên IIS Express.

IIS module cũng có thể bị xóa bằng Appcmd.exe. Cung cấp MODULE_NAMEAPPLICATION_NAME trong lệnh:

console
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME

Ví dụ, xóa DynamicCompressionModule khỏi Default Web Site:

console
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"

Cấu hình module tối thiểu

Các module duy nhất cần thiết để chạy ứng dụng ASP.NET Core là Anonymous Authentication Module và ASP.NET Core Module.

URI Caching Module (UriCacheModule) cho phép IIS lưu cấu hình website ở cấp URL. Nếu không có module này, IIS phải đọc và phân tích cấu hình trên mỗi yêu cầu, ngay cả khi cùng một URL được yêu cầu nhiều lần. Phân tích cấu hình trên mỗi yêu cầu dẫn đến chi phí hiệu suất đáng kể. Mặc dù URI Caching Module không bắt buộc để một ứng dụng ASP.NET Core được host chạy, chúng tôi khuyên nên bật URI Caching Module cho tất cả deployment ASP.NET Core.

HTTP Caching Module (HttpCacheModule) triển khai IIS output cache và cả logic để lưu cache các item trong HTTP.sys cache. Nếu không có module này, nội dung không còn được cache trong kernel mode và các cache profile bị bỏ qua. Xóa HTTP Caching Module thường gây ra các tác động bất lợi đến hiệu suất và sử dụng tài nguyên. Mặc dù HTTP Caching Module không bắt buộc để một ứng dụng ASP.NET Core được host chạy, chúng tôi khuyên nên bật HTTP Caching Module cho tất cả deployment ASP.NET Core.