IRONSOFTWAREHOME
開發者更新

HttpListener C#(對開發者如何理解的工作)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月23日

C#中用於建立基本獨立網路伺服器的最有用工具之一是HttpListener類。 它包含在System.Net命名空間中,提供了一種從客戶端接收和回應HTTP請求的方法。 這對於在桌面程式中管理基於網路的通信或建立輕量級的線上服務特別有用。

名為IronPDF for PDF的.NET程式庫,用於生成、修改和從PDF文件中提取內容。 它提供了全面的功能來從HTML建立PDF,將現有的PDF轉換為不同格式,以及使用程式來修改PDF。

開發人員可以通過將HttpListener與IronPDF結合,設計可以動態生成和提供PDF文件的網路服務,以回應HTTP請求。 需要根據使用者輸入或其他動態資料即時生成PDF的應用程式可能會發現這非常有用。

什麼是HttpListener C#?

HttpListener Documentation 是.NET Framework中System.Net命名空間中的一個簡單且靈活的類,讓開發人員能夠在C#中設計簡單的HTTP伺服器。 其目的是接收來自客戶的HTTP請求,處理它們,並回應正確的資訊。 此類是一個適合輕量級、獨立網路服務的絕佳選擇,也可以用於將基於網路的通信功能整合到桌面程式中,因為它不需要像IIS那樣的全功能網路伺服器。

HttpListener C# (How It Works For Developers): Figure 1

開發人員可以通過使用HttpListener設置URI前置詞來確定伺服器應監聽哪些地址。 一旦啟動了聆聽器,它會回應所有進來的請求,並使用HttpListenerContext來提供對請求和回應物件的存取。 此配置使得可以建立特定於應用程式需求的HTTP請求處理邏輯。 HttpListener的易用性和適應性使其在需要快速、有效和可配置的HTTP伺服器的情況下特別有用。 HttpListener提供了一個穩定的解決方案,沒有開銷,用於開發本地伺服器以進行測試、在線服務的原型設計,或將通信協議整合到桌面應用程式中。

Features of HttpListener C#

許多功能使C#的HttpListener成為構建HTTP伺服器的有效工具。 其必需元素有:

  • 易用性:HttpListener是一個易於使用的程式庫,使程式設計師可以寫更少的程式碼來建立基本的HTTP伺服器。
  • **URI 前置詞:**可以指定多個URI前置詞進行監聽,提供靈活性來處理各種端點,並保證伺服器只對相關的詢問做出反應。
  • 非同步操作:HttpListener支援非同步方法,透過能夠同時有效地處理多個請求,而不會中斷主執行緒,提升伺服器的可擴展性和響應性。
  • 身份驗證:HttpListener支援許多身份驗證技術,例如Basic、Digest、NTLM和統合Windows身份驗證,讓您可以根據需要確保您的端點安全。
  • HTTPS支援:HttpListener可以設置為回應HTTPS請求,例如,啟用安全的客戶端-伺服器資料通信。
  • 請求和回應處理:HttpListener讓您完全控制請求和回應過程,允許您透過新增新標頭、狀態碼和內容型別來改變回應,並讀取請求資料、標頭和參數。
  • 聆聽器配置:HttpListener提供特定於聆聽器的配置選項,以調整伺服器行為,如證書管理(用於HTTPS)、超時和其他參數。
  • **日誌記錄和診斷:**啟用日誌記錄和診斷,提供全面的請求和回應資訊,有助於監控和疑難排解。
  • **相容性:**允許與現有.NET服務和應用程式的順暢整合,因為它與其他.NET組件和程式庫功能良好。
  • 跨平台:HttpListener相容於Windows、Linux和macOS,並可與.NET Core和.NET 5+一起使用,提供跨平台開發的靈活性。

Create and Config HttpListener C#

在C#中建立和配置HttpListener涉及多個步驟。 以下是一份關於配置HttpListener來處理HTTP請求的完整教程。

建立一個新的.NET專案

打開您的命令提示符、控制台或終端。

鍵入以下命令來啟動新建立的.NET控制台應用程式:

dotnet new console -n HttpListenerExample
cd HttpListenerExample
SHELL

建立HttpListener實例

首先,建立一個HttpListener類的實例。

配置URI前置詞

新增URI前置詞以指定聆聽器應處理哪些地址。

啟動聆聽器

啟動HttpListener以開始聆聽進來的HTTP請求。

處理進來的請求

建立一個迴圈以處理進來的請求、處理它們並發送回應。

停止聆聽器

當不再需要時,優雅地停止HttpListener

以下是一個這些階段的實例:

using System;
using System.Net;
using System.Text;

class Program
{
    public static string url = "http://localhost:8080/";
    public static HttpListener listener;

    public static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        listener = new HttpListener();

        // Step 2: Configure URI prefixes
        listener.Prefixes.Add(url);

        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on " + url);

        // Step 4: Handle incoming requests
        // This server will handle requests in an infinite loop
        while (true)
        {
            // GetContext method blocks until a request is received
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            
            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");

            // Create a response
            HttpListenerResponse response = context.Response;

            // Add response content
            string responseString = "<html><body>Hello, world!</body></html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);
            
            // Set the content length and type
            response.ContentLength64 = buffer.Length;
            response.ContentType = "text/html";
            
            // Write the response to the output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(buffer, 0, buffer.Length);
            }

            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}

所包含的C#程式碼演示了建立和配置HttpListener,其功能如同一個基本的HTTP伺服器。 它首先實例化一個http://localhost:8080/),以定義其將為哪些地址處理請求。 接下來,使用Start方法來啟動聆聽器。 使用無限迴圈保持監聽新的HTTP請求。 GetContext在迴圈中等待請求,然後返回一個包含請求和回應物件的HttpListenerContext物件。

HttpListener C# (How It Works For Developers): Figure 2

在記錄請求URL後,建立一個簡單的HTML回應物件,將其轉換為位元組陣列,並發送到回應輸出流。 在將回應返回給客戶端之前,正確指定了回應的內容型別和長度。 無限迴圈意味著伺服器不斷地一個接一個地處理請求。 如果需要停止聆聽器,需要調用Stop方法,但在這種情況下,無限迴圈使其無法達到。

HttpListener C# (How It Works For Developers): Figure 3

入門

IronPDF幫助您在.NET中製作和修改高質量的PDF,這對於您需要建立文件和報告很重要。 HttpListener的內嵌HTTP伺服器功能允許您在小型應用程式或服務中管理網路請求。 這兩個工具在各自領域提高了.NET應用程式的實用性和速度。 要開始使用C#的HttpListener並結合IronPDF來建立PDF,請採取以下行動:

什麼是IronPDF?

功能豐富的.NET程式庫IronPDF for C#允許C#程式生成、讀取和編輯PDF文件。 借助此工具,開發人員可以快速將HTML、CSS和JavaScript素材轉換為高質量且可列印的PDF。 最重要的任務包括新增標題和頁腳、拆分和合併PDF、為文件新增水印以及將HTML轉換為PDF。 IronPDF對多種應用程式有用,因為它支持.NET Framework和.NET Core。

因為PDF很容易使用並包含大量資訊,開發人員可以輕鬆地將其包含在其產品中。 由於IronPDF可以處理複雜的資料佈局和格式,因此它生成的PDF輸出看起來與客戶端或原始HTML文字非常相似。

IronPDF在HTML到PDF的轉換中表現出色,確保精確保留原始佈局和樣式。 它非常適合從基於網路的內容(如報告、發票和文件)建立PDF文件。 用於HTML文件、URL和原始HTML字串的支持,IronPDF可以輕鬆生成高品質的PDF文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. 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");

        // 2. 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");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

HttpListener C# (How It Works For Developers): Figure 4

IronPDF的功能

從HTML生成PDF

將JavaScript、HTML和CSS轉換為PDF。 IronPDF 支持媒體查詢和響應式設計這兩個現代網路標準。 其對現代網頁標準的支持對於動態修飾具有HTML和CSS的PDF報告、發票和文件非常有用。

PDF編輯

可以在現有的PDF中新增文字、圖像和其他內容。 使用IronPDF,開發人員可以從PDF文件中提取文字和圖像,將多個PDF合併成一個文件,將PDF文件分割成多個單獨的文件,並在PDF頁面中新增水印、註釋、標題和頁腳。

PDF轉換

將多種文件格式(包括Word、Excel和圖片文件)轉換為PDF。 IronPDF也支持PDF到影像轉換(PNG、JPEG等)。

性能和可靠性

高性能和可靠性是工業環境中的理想設計特徵。 開發人員可以輕鬆管理大量的文件集。

安裝IronPDF

為了獲得在.NET專案中處理PDF所需的工具,請安裝IronPDF套件:

PM > Install-Package IronPdf

HttpListener C#與IronPDF整合

這是一個全面的範例,展示了如何使用IronPDF建立和提交PDF文件並設置HttpListener

using System;
using System.Net;
using System.Text;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        HttpListener listener = new HttpListener();
        
        // Step 2: Configure URI prefixes
        listener.Prefixes.Add("http://localhost:8080/");
        
        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on");
        
        // Step 4: Handle incoming requests
        while (true)
        {
            // Wait for an incoming request
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            
            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");
            
            // Generate PDF using IronPDF
            var htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>";
            var pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent);
            
            // Get the PDF as a byte array
            byte[] pdfBytes = pdf.BinaryData;
            
            // Create a response
            HttpListenerResponse response = context.Response;
            
            // Set the content length and type
            response.ContentLength64 = pdfBytes.Length;
            response.ContentType = "application/pdf";
            
            // Write the PDF to the response output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(pdfBytes, 0, pdfBytes.Length);
            }
            
            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}

所附的C#程式碼顯示了如何將IronPDF的HTML轉PDF轉換與HttpListener連接,以動態生成和傳送PDF文件,並將其設置為作為基本的HTTP方法伺服器。 第一步是建立一個http://localhost:8080/上監聽HTTP請求。

啟動聆聽器後,無限迴圈接管來處理進來的請求。 程式碼為每個請求記錄請求URL,使用IronPDF從HTML文字建立PDF文件,然後將PDF轉換為位元組陣列。 接下來,使用正確的MIME型別(application/pdf)和內容長度來設置回應。

HttpListener C# (How It Works For Developers): Figure 5

在將PDF位元組陣列寫入回應輸出流後,關閉第一個回應流以將其回傳給客戶端。 通過此配置,伺服器可以有效地返回響應HTTP請求而動態生成的PDF文件。

HttpListener C# (How It Works For Developers): Figure 6

結論

總結來說,將IronPDF與C#的HttpListener結合使用,可以可靠地動態生成和傳輸PDF文件。 藉助HttpListener,C#應用程式可以建立輕量的HTTP伺服器,能夠處理進來的請求並提供靈活的回應生成。 通過利用IronPDF的動態HTML到PDF轉換功能,開發者可以有效地生成自訂或資料驅動的PDF報告、發票或其他文件,直接來自伺服器端邏輯。

透過網站介面或API進行即時文件生成和傳輸的應用程式可能會發現這種組合特別有用。 開發人員可以藉助HttpListener和IronPDF,通過實行可擴展且響應的解決方案以解決特定的商業需求。 這些工具透過促進文件通過網路的無縫生成和傳輸來增強使用者體驗。

您可以透過使用OCR、條碼工作、建立PDF、與Excel連接等來提升您的.NET開發工具包。 這是通過結合其基本基礎與高度可調的Iron Software套件和技術來實現的。

通過清晰地闡明與專案相適合的授權可能性,為開發者簡化選擇最佳模型的過程。 這些優勢讓開發人員能夠以有效、及時和協調的方式應用解決方案來解決各種問題。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

bullet_checked無需信用卡或建立帳號
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立