.NET 帮助 Ocelot .NET(开发人员如何使用) Curtis Chau 已更新:七月 28, 2025 Download IronPDF NuGet 下载 DLL 下载 Windows 安装程序 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article Ocelot API 网关 是一个 .NET 库,实现了 API 网关模式,常用于 API 网关中以处理多个微服务的请求。 它作为一个轻量级 API 网关,将来自客户端的请求路由到下游服务。 本文详细介绍了 Ocelot API 网关如何位于客户端和下游服务之间,涵盖其安装、配置、关键功能和实际示例以展示其能力。 我们还将探讨 IronPDF 概述 和 Ocelot API 的组合使用。 什么是 Ocelot .NET? Ocelot 是一个针对 .NET 应用程序的开源 API 网关解决方案,旨在方便多个微服务之间的请求路由。 它充当反向代理,管理来自客户端的 HTTP 请求,并将其路由到 ASP.NET Core 环境中的适当服务。 Ocelot 在 ASP.NET Core 上开发,与 .NET 生态系统无缝集成,提供了一整套对现代应用程序至关重要的功能。 Ocelot 的关键特性 路由 Ocelot 功能的核心是其路由能力。 它根据开发者指定的配置将入站请求匹配到适当的服务路由,并可以与服务发现机制集成。 这包括对通配符路由的支持,这在处理不同的 API 版本或众多服务端点时特别有用。 中间件 / 委托处理程序 Ocelot 允许开发人员注入自定义中间件或处理程序,可以在请求到达客户端或服务之前处理请求和响应。这对于添加标头、记录请求或根据需要修改响应结构非常有用。 负载均衡 Ocelot 提供各种现成的负载均衡策略,如循环、最小连接数,以及自定义提供程序,如果没有预定义的策略适合需求。 此功能确保负载均匀分配给可用服务,从而提高应用程序的整体弹性和效率。 认证和授权 保护 API 端点至关重要,Ocelot 提供与现有认证提供程序(如 Identity Server)的集成支持。 它支持流行的认证方案,包括 JWT 和 OAuth2,并允许对用户访问服务进行细粒度控制。 速率限制和 QoS 速率限制对于防止滥用和确保公平使用服务至关重要,通过限制用户在给定时间段内可以发出的请求数量来实现。 服务质量(QoS)选项如设置超时和重试确保服务在各种网络条件和负载下保持可用和响应。 在 .NET 项目中设置 Ocelot 要将 Ocelot 集成到您的项目中,您需要通过 NuGet 安装 Ocelot 包并在 Program 类中进行配置: dotnet add package Ocelot 在 Startup.cs 或 Program.cs 类中配置服务,包括请求构建器中间件,以设置服务容器: public void ConfigureServices(IServiceCollection services) { // Add Ocelot services to the service collection services.AddOcelot(); } public async void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Use the developer exception page when in development mode if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // Start Ocelot middleware await app.UseOcelot(); } public void ConfigureServices(IServiceCollection services) { // Add Ocelot services to the service collection services.AddOcelot(); } public async void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Use the developer exception page when in development mode if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // Start Ocelot middleware await app.UseOcelot(); } Public Sub ConfigureServices(ByVal services As IServiceCollection) ' Add Ocelot services to the service collection services.AddOcelot() End Sub Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment) ' Use the developer exception page when in development mode If env.IsDevelopment() Then app.UseDeveloperExceptionPage() End If ' Start Ocelot middleware Await app.UseOcelot() End Sub $vbLabelText $csharpLabel 在 Ocelot 中配置路由 Ocelot 使用配置文件,通常是 ocelot.json,来定义路由规则。 这里是一个更复杂的示例,展示了多个路由配置: { "ReRoutes": [ { "DownstreamPathTemplate": "/api/users/{id}", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host": "userapi.com", "Port": 443 } ], "UpstreamPathTemplate": "/users/{id}", "UpstreamHttpMethod": ["Get"] }, { "DownstreamPathTemplate": "/api/products/{id}", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host": "productapi.com", "Port": 443 } ], "UpstreamPathTemplate": "/products/{id}", "UpstreamHttpMethod": ["Get"] } ], "GlobalConfiguration": { "BaseUrl": "http://yourgateway.com" } } 此配置指定了如何根据路径和 HTTP 方法使用 JSON 文件将 API 网关的请求路由到不同的下游服务。 在 Ocelot .NET 中使用 IronPDF 在 .NET 应用程序中结合 Ocelot 和 IronPDF 的 HTML 转 PDF 转换 提供了一种强大的解决方案,您可以将 PDF 生成请求路由到特定服务或在内部处理。 在这里,我将指导您设置一个使用 Ocelot 作为 API 网关和 IronPDF 从 HTML 生成 PDF 的基本 .NET Core 应用程序。 IronPDF在HTML到PDF转换方面表现出色,确保精确保留原始布局和样式。 它非常适合从基于Web的内容中创建PDF,如报告、发票和文档。 利用对HTML文件、URL和原始HTML字符串的支持,IronPDF轻松生成高质量的PDF文档。 using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // Convert HTML file to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // Convert HTML string to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // Convert HTML file to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' Convert HTML string to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' Convert HTML file to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel 步骤 1:设置 .NET Core Web 应用程序 首先,创建一个新的 .NET Core Web API 项目。 您可以使用 .NET CLI 或 Visual Studio 进行此操作。 使用 .NET CLI: dotnet new webapi -n OcelotWithIronPDF cd OcelotWithIronPDF dotnet new webapi -n OcelotWithIronPDF cd OcelotWithIronPDF SHELL 步骤 2:添加必要的包 您需要安装 Ocelot 和 IronPDF。 您可以通过 NuGet 添加这些包。 dotnet add package Ocelot dotnet add package IronPdf dotnet add package Ocelot dotnet add package IronPdf SHELL 步骤 3:配置 Ocelot 将一个 ocelot.json 文件添加到项目的根目录中,其中包含以下内容以配置 Ocelot 的路由。 此设置假定您希望 Ocelot 将 PDF 生成请求路由到将由 IronPDF 在同一应用程序中处理的特定路径。 { "ReRoutes": [ { "DownstreamPathTemplate": "/api/pdf", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 5001 } ], "UpstreamPathTemplate": "/generatepdf", "UpstreamHttpMethod": ["Post"] } ], "GlobalConfiguration": { "BaseUrl": "http://localhost:5000" } } 步骤 4:配置 Startup.cs 更新 Startup.cs 以包括 Ocelot 的中间件。 确保您还配置应用程序使用静态文件,因为 IronPDF 可能需要从本地文件系统加载资源。 public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOcelot(); } public async void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); await app.UseOcelot(); } } public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddOcelot(); } public async void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); await app.UseOcelot(); } } Public Class Startup Public Sub ConfigureServices(ByVal services As IServiceCollection) services.AddControllers() services.AddOcelot() End Sub Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment) If env.IsDevelopment() Then app.UseDeveloperExceptionPage() End If app.UseRouting() app.UseAuthorization() app.UseEndpoints(Sub(endpoints) endpoints.MapControllers() End Sub) Await app.UseOcelot() End Sub End Class $vbLabelText $csharpLabel 步骤 5:使用 IronPDF 实现 PDF 生成 在您的 Controllers 文件夹中创建一个新的控制器 PdfController.cs。 该控制器将处理 PDF 生成请求。 using Microsoft.AspNetCore.Mvc; using IronPdf; namespace OcelotWithIronPDF.Controllers { [ApiController] [Route("api/[controller]")] public class PdfController : ControllerBase { [HttpPost] public IActionResult CreatePdfFromHtml([FromBody] string htmlContent) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); var output = pdf.BinaryData; // Return the PDF as a file result return File(output, "application/pdf", "generated.pdf"); } } } using Microsoft.AspNetCore.Mvc; using IronPdf; namespace OcelotWithIronPDF.Controllers { [ApiController] [Route("api/[controller]")] public class PdfController : ControllerBase { [HttpPost] public IActionResult CreatePdfFromHtml([FromBody] string htmlContent) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); var output = pdf.BinaryData; // Return the PDF as a file result return File(output, "application/pdf", "generated.pdf"); } } } Imports Microsoft.AspNetCore.Mvc Imports IronPdf Namespace OcelotWithIronPDF.Controllers <ApiController> <Route("api/[controller]")> Public Class PdfController Inherits ControllerBase <HttpPost> Public Function CreatePdfFromHtml(<FromBody> ByVal htmlContent As String) As IActionResult Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) Dim output = pdf.BinaryData ' Return the PDF as a file result Return File(output, "application/pdf", "generated.pdf") End Function End Class End Namespace $vbLabelText $csharpLabel 步骤 6:运行应用程序 确保您的应用程序已正确配置为侦听 ocelot.json 中指定的端口。 您可以在 Properties/launchSettings.json 中设置此项。 { "profiles": { "OcelotWithIronPDF": { "commandName": "Project", "launchBrowser": false, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } 现在,运行您的应用程序,您应该能够将 HTML 内容发布到 http://localhost:5000/generatepdf 并接收 PDF 响应。 此示例展示了在同一应用程序中使用 Ocelot 和 IronPDF 的基本实现。 对于生产环境,请考虑保护您的端点、处理错误场景以及根据您的特定需求优化 PDF 生成过程。 结论 总之,Ocelot 是管理和路由微服务架构中的请求的绝佳选择。 其强大的功能如路由、负载均衡、中间件支持和认证使其成为任何 .NET 开发人员的强大工具。 通过遵循提供的详细步骤,您可以有效地将 Ocelot 集成到您的 .NET 项目中,以简化您的 API 网关需求。 此外,如果您需要 PDF 生成功能,将 IronPDF 与 Ocelot 集成很简单,并增强了应用程序的功能。 IronPDF 提供 免费试用,许可证从满足您 PDF 需求的具有成本效益的解决方案开始。 通过将 Ocelot 和 IronPDF 结合使用,您可以构建一个综合且高效的微服务基础设施,同时满足路由和文档生成需求。 常见问题解答 Ocelot 如何改进 .NET 应用程序中的微服务通信? Ocelot 作为 API 网关,促进跨 .NET 应用程序中多个微服务的 HTTP 请求的高效路由和管理。它提供路由、负载均衡和身份验证等功能,以简化服务之间的通信。 使用 Ocelot 搭配 IronPDF 有哪些好处? 将 Ocelot 与 IronPDF 集成,允许开发人员在 .NET 应用程序中高效地路由 PDF 生成请求。IronPDF 确保 HTML 到 PDF 的转换保持原始布局和样式,理想用于生成网站内容,如报告和发票。 如何配置 Ocelot 进行负载均衡? Ocelot 支持多种负载平衡策略,包括 Round Robin 和 Least Connection,可以通过通常名为 ocelot.json 的 JSON 文件进行配置。这确保了流量在微服务之间均匀分布。 中间件在 Ocelot 架构中发挥什么作用? Ocelot 中的中间件允许开发人员插入自定义处理程序来处理请求和响应。这对于添加头信息、记录或修改响应等任务非常有用,从而增强了 API 网关的灵活性和功能性。 如何在 .NET 项目中设置 Ocelot? 要在 .NET 项目中设置 Ocelot,请通过 NuGet 安装 Ocelot 包,然后通过在程序类中添加 Ocelot 服务并在配置文件中定义路由来配置它。此设置有助于 API 请求的路由和管理。 Ocelot 使用什么策略来处理路由? Ocelot 使用配置驱动路由,在 ocelot.json 文件中指定,从 API 网关将请求定向到合适的下游服务。它支持通配符路由和服务发现机制,以实现灵活的路由设置。 Ocelot 如何确保安全的 API 访问? Ocelot 通过与身份认证提供商,如 Identity Server 集成,并支持 JWT 和 OAuth2 方案,允许通过控制用户权限来确保安全的 API 访问,并保护端点。 Ocelot 是否可以用于优化 PDF 生成工作流? 是的,Ocelot 可以将请求路由到专用于 PDF 生成的具体服务,如使用 IronPDF 的服务。此设置通过高效处理请求并在转换过程中保持文档完整性来优化 PDF 工作流。 Ocelot 如何与服务发现机制集成? Ocelot 支持与服务发现机制(如 Consul 和 Eureka)的集成,这使其能够根据服务的当前状态动态路由请求。这种集成简化了在微服务架构中管理服务。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多 已更新九月 4, 2025 C# String Equals(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 已更新八月 5, 2025 C# Switch 模式匹配(开发者用法) 与强大的 PDF 库 IronPDF 结合使用,切换模式匹配允许您为文档处理构建更智能、更简洁的逻辑。 阅读更多 Microsoft.Extensions.Caching.Memory 示例(带PDF)在C#中NHibernate C#(开发人员如何...
已更新九月 4, 2025 RandomNumberGenerator C# 使用 RandomNumberGenerator C# 类可以帮助将您的 PDF 生成和编辑项目提升到一个新的高度。 阅读更多