日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core WebListener 服务器

發布時間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core WebListener 服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WebListener是一個只能運行在Windows上的ASP.NET Core web服務器,基于Http.Sys內核模塊驅動構建。在不借助IIS作為反向代理服務器的情況下,WebListener可以替代Kestrel用來與直接與互聯網相連。實際上,WebListener不能和IIS或IIS Express一起使用,這是因為它與ASP.NET Core模塊并不兼容

盡管WebListener為ASP.NET Core而開發,它也可以經由Microsoft.Net.Http.Server?NuGet 包而被任何.NET Core和.NET Framework應用所使用。

WebListener支持以下功能:

  • Windows Authentication

  • Port sharing

  • HTTPS with SNI

  • HTTP/2 over TLS (Windows 10)

  • Direct file transmission

  • Response caching

  • WebSockets (Windows 8)

支持的Windows版本:

  • Windows 7和Windows Server 2008 R2和更高版本

查看或下載示例代碼

何時使用WebListener

當你需要將服務器直接暴露到互聯網上并且不使用IIS部署時,WebListener會是一個有效的選擇。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">

因為WebListener基于Http.Sys構建,它不會請求反向代理服務器防御攻擊。對于防御多類攻擊下和保證全功能服務器的健壯性,安全性以及可擴展性而言,Http.Sys是一種成熟的技術。IIS本身作為HTTP偵聽器運行在Http.Sys之上。

在你需要某項只能由Weblistener提供而Kestrel不能支持的功能的時候,對于內部部署應用而言,它也是一個不錯的選擇。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">

如何使用WebListener

以下是對主機系統和你的ASP.NET Core應用設定任務的簡要概述。

配置 Windows 服務器

  • 安裝你的應用所需要的.NET 版本,如.NET Core或是.NET Framework 4.5.1。

  • 預注冊URL前綴注冊到WebListener,并建立SSL證書。

如果你在Windows上沒有預先注冊URL前綴,你運行的應用必須具有管理員權限。唯一的例外是,如果你使用HTTP(不是HTTPS)前綴和大于1024的端口號綁定到本地主機,此種情況下不需要管理員權限。

詳細信息,請參考后文中的如何預注冊前綴和配置SSL一節。

  • 打開防火墻端口以允許流量到達WebListener。

    你可以使用netsh.exe或是PowerShell cmdlets。

關于Http.Sys registry settings的更多信息請點擊相關鏈接。

配置你的ASP.NET Core應用

  • 安裝Microsoft.AspNetCore.Server.WebListener?Nuget包 ,該包帶有Microsoft.Net.Http.Server包依賴。

  • 在應用的Main方法中調用WebHostBuilder的擴展方法UseWebListener,并指定你需要的WebListener選項和參數,如以下示例所示:

public static int Main(string[] args){Console.WriteLine("Running demo with WebListener."); ? ?var config = new ConfigurationBuilder().AddCommandLine(args).Build(); ? ?var builder = new WebHostBuilder().UseContentRoot(Directory.GetCurrentDirectory()).UseConfiguration(config).UseStartup<Startup>().UseWebListener(options =>{options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.None;options.ListenerSettings.Authentication.AllowAnonymous = true;}); ? ?var host = builder.Build();host.Run(); ? ?return 0; }
  • 配置URL和端口進行偵聽

默認的ASP.NET Core項目綁定http://localhost:5000。通過使用UseUrls擴展方法——編輯urls命令行參數,或者是通過ASP.NET Core配置系統,你可以為 WebListener 配置URL前綴和端口號。更多的信息,請參考Hosting。

WebListener使用Http.Sys前綴字符串格式,但是沒有特定于它的前綴字符串格式要求。

Note

請確保你在UseUrls方法中指定的前綴字符串和你在服務器上預先注冊的字符串是相同的。

  • 請確保你的應用未配置為運行IIS或IIS Express。

在Visual Studio中,項目的默認啟動配置服務器是IIS Express。為了能夠在console應用中運行項目,你必須手動更改所選配置文件,如以下屏幕截圖所示:

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 172px;">

如何在ASP.NET Core之外運行WebListener

  • 安裝Microsoft.Net.Http.ServerNuGet包

  • 如你在ASP.NET Core中做的那樣,預注冊URL前綴注冊到WebListener,并建立SSL證書。

關于Http.Sys registry settings的更多信息請點擊相關鏈接。

以下是一個在ASP.NET Core之外演示使用WebListener的代碼示例:

var settings = new WebListenerSettings(); settings.UrlPrefixes.Add("http://localhost:8080");using (WebListener listener = new WebListener(settings)) {listener.Start(); ? ?while (true){ ? ? ? ?var context = await listener.AcceptAsync(); ? ? ? ?byte[] bytes = Encoding.ASCII.GetBytes("Hello World: " + DateTime.Now);context.Response.ContentLength = bytes.Length;context.Response.ContentType = "text/plain"; ? ? ? ?await context.Response.Body.WriteAsync(bytes, 0, bytes.Length);context.Dispose();} }

預注冊URL前綴并配置SSL

IIS和WebListener都依賴于底層的Http.Sys內核模塊驅動,用以監聽請求,并做初步處理。在IIS中,圖形化管理界面可以提供給你一個相對容易的方式去進行配置。但是如果你用的是WebListener,那么你需要自己使用內置工具netsh.exe去配置Http.Sys。

你需要使用netsh.exe工具完成的最常見任務是保留URL前綴和分配SSL證書。

對于初學者來說,NetSh.exe并不是一個簡便的工具。以下示例展示了為80/443端口保留URL前綴所需的最少代碼。

netsh http add urlacl url=http://+:80/ user=Usersnetsh http add urlacl url=https://+:443/ user=Users

以下示例展示了如何分配SSL證書:

netsh http add sslcert ipport=0.0.0.0:443 certhash=MyCertHash_Here appid={00000000-0000-0000-0000-000000000000}".

以下是官方參考文檔:

  • Netsh Commands for Hypertext Transfer Protocol (HTTP)

  • UrlPrefix Strings

以下資源鏈接為多種情況提供了詳細說明。引用文章HttpListener同樣適用基于HTTP.SYS構建的WebListener。

  • How to: Configure a Port with an SSL Certificate

  • HTTPS Communication - HttpListener based Hosting and Client Certification
    這是一篇過時但仍有些有用信息的第三方博客

  • How To: Walkthrough Using HttpListener or Http Server unmanaged code (C++) as an SSL Simple Server
    這也是一篇過時但仍有些有用信息的博客

  • How Do I Set Up A .NET Core WebListener With SSL?

以下列出了一些比netsh.exe命令行工具更容易使用的第三方工具,雖然它們并沒有被微軟提供或認可。正如netsh.exe本身要求具備管理員權限,這些工具也默認如此。

  • HttpSysManager?提供了一個圖形化界面用以偵聽配置SSL證書和選項,前綴預定以及證書信任列表。

  • HttpConfig?可以列出或配置SSL證書和URL前綴。它的圖形化界面比HttpSysManager更精細,并公開了更多的配置選項,除此以外,它也提供了和HttpSysManager相似的功能。HttpConfig不能創建新的證書信任列表(CTL),但是可以分配現有證書。

為了生成自簽名的SSL證書,微軟提供了以下命令行工具:MakeCert.exe和PowerShell cmdlet?New-SelfSignedCertificate。它們同樣有第三方的圖形化界面以幫助生成自簽名的SSL證書。

  • SelfCert

  • Makecert UI

下一步

更多的信息,請參考以下資源:

  • Sample app for this article

  • WebListener source code

  • Hosting

原文地址:http://www.cnblogs.com/Wddpct/p/6123665.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的ASP.NET Core WebListener 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。