国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

詳解ASP.NET Core 在 IIS 下的兩種部署模式

這篇具有很好參考價(jià)值的文章主要介紹了詳解ASP.NET Core 在 IIS 下的兩種部署模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

KestrelServer最大的優(yōu)勢(shì)體現(xiàn)在它的跨平臺(tái)的能力,如果ASP.NET CORE應(yīng)用只需要部署在Windows環(huán)境下,IIS也是不錯(cuò)的選擇。ASP.NET CORE應(yīng)用針對(duì)IIS具有兩種部署模式,它們都依賴于一個(gè)IIS針對(duì)ASP.NET CORE Core的擴(kuò)展模塊。

一、ASP.NET CORE Core Module

IIS其實(shí)也是按照管道的方式來(lái)處理請(qǐng)求的,但是IIS管道和ASP.NET CORE中間件管道有本質(zhì)的不同。對(duì)于部署在IIS中的Web應(yīng)用來(lái)說(shuō),從最初接收到請(qǐng)求到最終將響應(yīng)發(fā)出去,這段處理流程被細(xì)分為一系列固定的步驟,每個(gè)都具有一個(gè)或者兩個(gè)(前置+后置)對(duì)應(yīng)的事件或者回調(diào)。我們可以利用自定義的Module注冊(cè)相應(yīng)的事件或回調(diào)在適當(dāng)?shù)臅r(shí)機(jī)接管請(qǐng)求,并按照自己希望的方式對(duì)它進(jìn)行處理。

IIS提供了一系列原生(Native)的Module,我們也可以使用任意.NET語(yǔ)言編寫(xiě)托管的Module,整合IIS和ASP.NET CORE 的這個(gè)ASP.NET CORE Core Module就是一個(gè)原生的Module。它利用注冊(cè)的事件將請(qǐng)求從IIS管道中攔截下來(lái),并轉(zhuǎn)發(fā)給ASP.NET CORE管道進(jìn)行處理。相應(yīng)的安裝包可以從https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer下載。

二、 In-Process部署模式

ASP.NET CORE在IIS下有In-Process和Out-of-Process兩種部署模式。In-Process模式下的ASP.NET CORE應(yīng)用運(yùn)行在IIS的工作進(jìn)程w3wp.exe中(如果采用IIS Express,工作進(jìn)程為iisexpress.exe)。如圖18-7所示,ASP.NET CORE應(yīng)用在這種模式下使用的服務(wù)器類型是IISHttpServer,上述的ASP.NET CORE Core Module會(huì)將原始的請(qǐng)求轉(zhuǎn)發(fā)給這個(gè)服務(wù)器,并將后者生成響應(yīng)轉(zhuǎn)交給IIS服務(wù)器進(jìn)行回復(fù)。

.net core iis部署,.net,asp.net,服務(wù)器,后端,開(kāi)發(fā)語(yǔ)言,c#

?圖1 In-Process部署模式

In-Process是默認(rèn)采用的部署模式,所以我們不需要為此做任何設(shè)置,接下來(lái)我們就來(lái)演示一下具體的部署方式。我們?cè)贗IS的默認(rèn)站點(diǎn)(Defaut Web Site)創(chuàng)建一個(gè)名為WebApp的應(yīng)用,并將映射的物理路徑設(shè)置為“C:\App”。然后我們創(chuàng)建一個(gè)空的ASP.NET CORE程序,并編寫(xiě)了如下這個(gè)將當(dāng)前進(jìn)程名稱作為響應(yīng)內(nèi)容的演示程序。

using System.Diagnostics;
var app = WebApplication.Create(args);
app.Run(context => context.Response.WriteAsync(Process.GetCurrentProcess().ProcessName));
app.Run();

然后我們?cè)赩isual Studio的解決方案視圖右鍵選擇該項(xiàng)目,在彈出的菜單中選擇“發(fā)布(Publish)”選項(xiàng),創(chuàng)建一個(gè)指向“C:\App”的Publish Profile,然后執(zhí)行這個(gè)Profile完成發(fā)布工作。應(yīng)用發(fā)布也可以執(zhí)行命令行“dotnet publish”來(lái)完成。應(yīng)用部署好之后,我們利用瀏覽器采用地址“http://localhost/webapp”訪問(wèn)部署好的應(yīng)用,從圖2所示的輸出結(jié)果可以看出ASP.NET CORE應(yīng)用實(shí)際上就運(yùn)行在IIS的工作進(jìn)程中。

.net core iis部署,.net,asp.net,服務(wù)器,后端,開(kāi)發(fā)語(yǔ)言,c#

圖2 In-Process模式下的進(jìn)程名稱

如果我查看此時(shí)的部署目錄(“C:\App”),會(huì)發(fā)現(xiàn)生成的程序集和配置文件。應(yīng)用既然部署在IIS中,那么具體的配置自然定義在web.config中,如下所示的就是這個(gè)文件的內(nèi)容。我們會(huì)發(fā)現(xiàn)所有的請(qǐng)求(path="*" verb="*")都被映射到“AspNetCoreModuleV2”這個(gè)Module上,這就是上面介紹的ASP.NET CORE Core Module。至于這個(gè)Module如果啟動(dòng)ASP.NET CORE管道并與之交互,則由后面的<aspNetCore>配置節(jié)來(lái)控制,可以看到它將表示部署模式的hostingModel屬性設(shè)置為“inprocess”。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\App.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 243DF55D-2E11-481F-AA7A-141C2A75792D-->

In-Process模式會(huì)注冊(cè)如下這個(gè)IISHttpServer,對(duì)應(yīng)的配置選項(xiàng)定義在IISServerOptions中。如果具有同步讀寫(xiě)請(qǐng)求和響應(yīng)主體內(nèi)容的需要,我們需要將AllowSynchronousIO屬性(默認(rèn)為False)設(shè)置為True。如果將AutomaticAuthentication屬性返回True(默認(rèn)值),認(rèn)證用戶將自動(dòng)賦值給HttpContext上下文的User屬性。我們可以利用MaxRequestBodyBufferSize(默認(rèn)為1,048,576)和MaxRequestBodySize屬性(默認(rèn)為30,000,000)設(shè)置接收請(qǐng)求主體的緩沖區(qū)的容量,和最大請(qǐng)求主體的字節(jié)數(shù)。

internal class IISHttpServer : IServer, IDisposable
{
    public IFeatureCollection Features { get; }
    public IISHttpServer(IISNativeApplication nativeApplication, IHostApplicationLifetime applicationLifetime,IAuthenticationSchemeProvider authentication, IOptions<IISServerOptions> options, ILogger<IISHttpServer> logger);
    public unsafe Task StartAsync<TContext>(IHttpApplication<TContext> application, CancellationToken cancellationToken);
    public Task StopAsync(CancellationToken cancellationToken);
}
public class IISServerOptions
{
    public bool 	AllowSynchronousIO { get; set; }
    public bool 	AutomaticAuthentication { get; set; }
    public string? 	AuthenticationDisplayName { get; set; }
    public int 	        MaxRequestBodyBufferSize { get; set; }
    public long? 	MaxRequestBodySize { get; set; }
}

針對(duì)IISHttpServer的注冊(cè)實(shí)現(xiàn)在IWebHostBuilder接口如下這個(gè)UseIIS擴(kuò)展方法中。由于這個(gè)方法并沒(méi)有提供一個(gè)Action<IISServerOptions>委托參數(shù)對(duì)IISServerOptions配置選項(xiàng)進(jìn)行設(shè)置,所以我們不得不采用原始的對(duì)它進(jìn)行設(shè)置。由于IHostBuider接口ConfigureWebHostDefaults擴(kuò)展方法內(nèi)部會(huì)調(diào)用這個(gè)方法, 我們并不需要為此做額外的工作。

public static class WebHostBuilderIISExtensions
{
    public static IWebHostBuilder UseIIS(this IWebHostBuilder hostBuilder);
}

三、Out-of-Process部署模式

ASP.NET CORE應(yīng)用在IIS中還可以采用Out-of -Process模式進(jìn)行部署。如圖3所示,在這種部署下,采用KestrelServer的ASP.NET CORE應(yīng)用運(yùn)行在獨(dú)立的dotnet.exe進(jìn)程中。當(dāng)IIS接受到針對(duì)目標(biāo)應(yīng)用的請(qǐng)求時(shí),如果目標(biāo)應(yīng)用所在的進(jìn)程并未啟動(dòng),ASP.NET CORE Core Module還負(fù)責(zé)執(zhí)行dotnet命令激活此進(jìn)程,相當(dāng)于充當(dāng)了WAS(Windows Activation Service)的作用。

.net core iis部署,.net,asp.net,服務(wù)器,后端,開(kāi)發(fā)語(yǔ)言,c#


圖3 Out-of-Process部署模式

在激活A(yù)SP.NET CORE承載進(jìn)程之前,ASP.NET CORE Core Module會(huì)選擇一個(gè)可用的端口號(hào),該端口號(hào)和當(dāng)前應(yīng)用的路徑(該路徑將作用ASP.NET CORE應(yīng)用的PathBase)被寫(xiě)入環(huán)境變量,對(duì)應(yīng)的環(huán)境變量名稱分別為“ASPNETCORE_PORT”和“ASPNETCORE_APPL_PATH”。以O(shè)ut-of-Process模式部署的ASP.NET CORE應(yīng)用只會(huì)接收IIS轉(zhuǎn)發(fā)給它的請(qǐng)求,為了能夠過(guò)濾其它來(lái)源的請(qǐng)求,ASP.NET CORE Core Module會(huì)生成一個(gè)Token并寫(xiě)入環(huán)境變量“ASPNETCORE_TOKEN”。后續(xù)轉(zhuǎn)發(fā)的請(qǐng)求會(huì)利用一個(gè)報(bào)頭“MS-ASPNETCORE-TOKEN”傳遞此Token,ASP.NET CORE應(yīng)用會(huì)校驗(yàn)是否與之前生成的Token匹配。

ASP.NET CORE Core Module還會(huì)利用環(huán)境變量傳遞其他一些設(shè)置,認(rèn)證方案會(huì)寫(xiě)入環(huán)境變量“ASPNETCORE_IIS_HTTPAUTH”,另一個(gè)“ASPNETCORE_IIS_WEBSOCKETS_SUPPORTED”環(huán)境變量用來(lái)設(shè)置針對(duì)Web Socket的支持狀態(tài)。由于這些環(huán)境變量名稱的前綴都是“ASPNETCORE_”,所以它們會(huì)作為默認(rèn)配置源。KestrelServer最終會(huì)綁定到基于該端口的本地終結(jié)點(diǎn)(“l(fā)ocalhost”)進(jìn)行監(jiān)聽(tīng)。由于監(jiān)聽(tīng)地址是由ASP.NET CORE Core Module控制的,所以它只需要將請(qǐng)求往該地址進(jìn)行轉(zhuǎn)發(fā),最終將接收到響應(yīng)交給IIS返回即可。由于這里涉及本地回環(huán)網(wǎng)絡(luò)(Loopback)的訪問(wèn),其性能自然不如In-Process部署模式。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2"resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\App.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="outofprocess" />
    </system.webServer>
  </location>
</configuration>

我們?cè)谏厦嫜菔玖薎n-Process的部署方式,現(xiàn)在我們直接修改配置文件web.config,按照上面的方式將<aspNetCore>配置節(jié)的hostingModel屬性設(shè)置為“outofprocess”,部署的應(yīng)用就自動(dòng)切換到Out-of-Process。此時(shí)再次以相同的方式訪問(wèn)部署的應(yīng)用,我們會(huì)發(fā)現(xiàn)瀏覽器上顯示的進(jìn)程名稱變成了“dotnet”。

.net core iis部署,.net,asp.net,服務(wù)器,后端,開(kāi)發(fā)語(yǔ)言,c#

?圖4 Out-of-Process模式下的進(jìn)程名稱

部署模式可以直接定義在項(xiàng)目文件中,如果按照如下的方式將AspNetCoreHostingModel屬性設(shè)置為“OutOfProcess”,那么發(fā)布后生成的web.config中針對(duì)部署模式的設(shè)置將隨之改變。該屬性默認(rèn)值為“InProcess”,我們也可以顯式進(jìn)行設(shè)置。

<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
   </PropertyGroup>
</Project>

為了進(jìn)一步驗(yàn)證上述的這一系列環(huán)境變量是否存在,如下所示的演示程序會(huì)將以“ASPNETCORE_”為前綴的環(huán)境變量作為響應(yīng)內(nèi)容輸出來(lái)。除此之外,作為響應(yīng)輸出的還有進(jìn)程名稱、請(qǐng)求的PathBase和“MS-ASPNETCORE-TOKEN”報(bào)頭。

using System.Diagnostics;
using System.Text;

var app = WebApplication.Create(args);
app.Run(HandleAsync);
app.Run();

Task HandleAsync(HttpContext httpContext)
{
    var request = httpContext.Request;
    var configuration = httpContext.RequestServices.GetRequiredService<IConfiguration>();
    var builder = new StringBuilder();
    builder.AppendLine($"Process: {Process.GetCurrentProcess().ProcessName}");
    builder.AppendLine($"MS-ASPNETCORE-TOKEN: {request.Headers["MS-ASPNETCORE-TOKEN"]}");
    builder.AppendLine($"PathBase: {request.PathBase}");
    builder.AppendLine("Environment Variables");
    foreach (string key in Environment.GetEnvironmentVariables().Keys)
    {
        if (key.StartsWith("ASPNETCORE_"))
        {
            builder.AppendLine($"\t{key}={Environment.GetEnvironmentVariable(key)}");
        }
    }
    return httpContext.Response.WriteAsync(builder.ToString());
}

應(yīng)用重新發(fā)布之后,再次利用瀏覽器訪問(wèn)后回得到如圖5所示的結(jié)果。我們可以從這里找到上述的環(huán)境變量,請(qǐng)求攜帶的“MS-ASPNETCORE-TOKEN”報(bào)頭正好與對(duì)應(yīng)環(huán)境變量的值一致,應(yīng)用在IIS中的虛擬目錄作為了應(yīng)用路徑被寫(xiě)入環(huán)境變量并成為請(qǐng)求的PathBase。如果站點(diǎn)提供了HTTPS終結(jié)點(diǎn),其端口還會(huì)寫(xiě)入“ASPNETCORE_ANCM_HTTPS_PORT”這個(gè)環(huán)境變量,這是為了實(shí)現(xiàn)針對(duì)HTTPS終結(jié)點(diǎn)的重定向而設(shè)計(jì)的。

.net core iis部署,.net,asp.net,服務(wù)器,后端,開(kāi)發(fā)語(yǔ)言,c#

圖5 Out-of-Process模式下環(huán)境變量

Out-of-Process部署的大部分實(shí)現(xiàn)都是由如下這個(gè)IISMiddleware中間件來(lái)完成的,IISOptions為對(duì)應(yīng)的配置選項(xiàng)。IISMiddleware中間件完成了針對(duì)“配對(duì)Token”的驗(yàn)證過(guò)濾非IIS轉(zhuǎn)發(fā)的請(qǐng)求。如果IISOptions配置選項(xiàng)的ForwardClientCertificate屬性返回True(默認(rèn)值),此中間件會(huì)從請(qǐng)求報(bào)頭“MS-ASPNETCORE-CLIENTCERT”中提取客戶端證書(shū),并將它保存到ITlsConnectionFeature特性中。該中間件還會(huì)將當(dāng)前Windows賬號(hào)對(duì)應(yīng)的WindowsPrincipal對(duì)象附加到HttpContext上下文的特性集合中,如果IISOptions配置選項(xiàng)的AutomaticAuthentication屬性返回True(默認(rèn)值),該對(duì)象會(huì)直接賦值給HttpContext上下文的User屬性。

public class IISMiddleware
{
    public IISMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions<IISOptions> options, string pairingToken, IAuthenticationSchemeProvider authentication, IHostApplicationLifetime applicationLifetime);
    public IISMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions<IISOptions> options, string pairingToken, bool isWebsocketsSupported, IAuthenticationSchemeProvider authentication, IHostApplicationLifetime applicationLifetime);
    public Task Invoke(HttpContext httpContext);
    public Task Invoke(HttpContext httpContext)
}
public class IISOptions
{
    public bool AutomaticAuthentication { get; set; }
    public string? AuthenticationDisplayName { get; set; }
    public bool ForwardClientCertificate { get; set; }
}

IIS利用WAS根據(jù)請(qǐng)求激活工作進(jìn)程w3wp.exe。如果站點(diǎn)長(zhǎng)時(shí)間未曾訪問(wèn),它還會(huì)自動(dòng)關(guān)閉工作進(jìn)程。如果工作進(jìn)程都關(guān)閉了,承載ASP.NET CORE應(yīng)用的dotnet.exe進(jìn)程自然也應(yīng)該關(guān)閉。為了關(guān)閉應(yīng)用承載進(jìn)程,ASP.NET CORE Core Module會(huì)發(fā)送一個(gè)特殊的請(qǐng)求,該請(qǐng)求攜帶一個(gè)值為“shutdown”的“MS-ASPNETCORE-EVENT”報(bào)頭,IISMiddleware中間件在接收到該請(qǐng)求時(shí)會(huì)利用注入的IHostApplicationLifetime對(duì)象關(guān)閉當(dāng)前應(yīng)用。如果不支持WebSocket,該中間件還會(huì)將代表“可升級(jí)到雙向通信”的IHttpUpgradeFeature特性刪除。將應(yīng)用路徑設(shè)置為請(qǐng)求的PathBase也是由這個(gè)中間件完成的。由于IISMiddleware中間件所作的實(shí)際上是對(duì)HttpContext上下文進(jìn)行初始化的工作,所以它必須優(yōu)先執(zhí)行才有意義,為了將此中間件置于管道的前端,如下這個(gè)IISSetupFilter被定義出來(lái)完成對(duì)該中間件的注冊(cè)。

internal class IISSetupFilter : IStartupFilter
{
    internal IISSetupFilter(string pairingToken, PathString pathBase, bool isWebsocketsSupported);
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next);
}

IISSetupFilter最終是通過(guò)IWebHostBuilder接口如下這個(gè)UseIISIntegration擴(kuò)展方法進(jìn)行注冊(cè)的。這個(gè)方法還負(fù)責(zé)從當(dāng)前配置和環(huán)境變量提取端口號(hào),并完成監(jiān)聽(tīng)地址的注冊(cè)。由于KestrelServer默認(rèn)會(huì)選擇注冊(cè)到服務(wù)器上的終結(jié)點(diǎn),所以該方法會(huì)利用配置將IServerAddressesFeature特性的PreferHostingUrls屬性設(shè)置為True,這里設(shè)置的監(jiān)聽(tīng)地址才會(huì)生效。這個(gè)方法還會(huì)根據(jù)當(dāng)前IIS站點(diǎn)的設(shè)置對(duì)IISOptions作相應(yīng)設(shè)置。由于IHostBuider接口ConfigureWebHostDefaults擴(kuò)展方法內(nèi)部也會(huì)調(diào)用這個(gè)方法,我們并不需要為此做額外的工作。

public static class WebHostBuilderIISExtensions
{
    public static IWebHostBuilder UseIISIntegration(this IWebHostBuilder hostBuilder);
}

四、<aspnetcore>配置

不論是采用何種部署模式,相關(guān)的配置都定義在部署目錄下的web.config配置文件,它提供的針對(duì)ASP.NET CORE Core Module的映射使我們能夠?qū)SP.NET CORE應(yīng)用部署在IIS中。在web.config中,與ASP.NET CORE應(yīng)用部署相關(guān)的配置定義在<aspNetCore>配置節(jié)中。

<aspNetCore
    processPath 		= "dotnet"
    arguments 			= ".\App.dll"
    stdoutLogEnabled 		= "false"
    stdoutLogFile 		= ".\logs\stdout"
    hostingModel		= "outofprocess"
    forwardWindowsAuthToken	= "true"
    processesPerApplication	= "10"
    rapidFailsPerMinute	= "5"
    requestTimeout		= "00:02:00"
    shutdownTimeLimit		= "60"
    startupRetryCount		= "3"
    startupTimeLimit		= "60">
    <environmentVariables>
        <environmentVariable name = "ASPNETCORE_ENVIRONMENT" value = "Development"/>
    </environmentVariables>
    <handlerSettings>
        <handlerSetting name = "stackSize" value = "2097152" />
        <handlerSetting name = "debugFile" value = ".\logs\aspnetcore-debug.log" />
        <handlerSetting name = "debugLevel" value = "FILE,TRACE" />
    </handlerSettings>
</aspNetCore>

上面這段XML片段包含了完整的<aspNetCore>配置屬性,下表對(duì)這些配置進(jìn)行了簡(jiǎn)單的說(shuō)明。設(shè)置的文件可以采用絕對(duì)路徑和相對(duì)于部署目錄(通過(guò) “.”表示)的相對(duì)路徑。

屬性

含  義

processPath

ASP.NET CORE應(yīng)用啟動(dòng)命令所在路徑,必需。

arguments

ASP.NET CORE應(yīng)用啟動(dòng)傳入的參數(shù),可選。

stdoutLogEnabled

是否將stdout 和stderr輸出到 stdoutLogFile屬性指定的文件,默認(rèn)為False。

stdoutLogFile

作為stdout 和stderr輸出的日志文件,默認(rèn)為“ aspnetcore-stdout”。

hostingModel

部署模式,“inprocess/InProcess”或者“outofprocess/OutOfProcess”(默認(rèn)值)。

forwardWindowsAuthToken

是否轉(zhuǎn)發(fā)Windows認(rèn)證令牌,默認(rèn)為True。

processesPerApplication

承載ASP.NET CORE應(yīng)用的進(jìn)程( processPath)數(shù),默認(rèn)為1。該配置對(duì)In-Process模式無(wú)效。

rapidFailsPerMinute

ASP.NET CORE應(yīng)用承載進(jìn)程( processPath)每分鐘允許崩潰的次數(shù),默認(rèn)為10,超過(guò)此數(shù)量將不再試圖重新啟動(dòng)它。

requestTimeout

請(qǐng)求處理超時(shí)時(shí)間,默認(rèn)為2分鐘。

startupRetryCount

ASP.NET CORE應(yīng)用承載進(jìn)程啟動(dòng)重試次數(shù),默認(rèn)為2次。

startupTimeLimit

ASP.NET CORE應(yīng)用承載進(jìn)程啟動(dòng)超時(shí)時(shí)間(單位為秒),默認(rèn)為120秒。

environmentVariables

設(shè)置環(huán)境變量。

handlerSettings

為ASP.NET CORE Core Module提供額外的配置。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-684667.html

到了這里,關(guān)于詳解ASP.NET Core 在 IIS 下的兩種部署模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • asp.net core項(xiàng)目發(fā)布到 iis上

    asp.net core項(xiàng)目發(fā)布到 iis上

    ????????我們都知道與傳統(tǒng)asp.net 項(xiàng)目比較,ASP.NET Core則完全不同,它并不是運(yùn)行在IIS的工作進(jìn)程中,而是獨(dú)立運(yùn)行的。它運(yùn)行于控制臺(tái)應(yīng)用程序之中,控制臺(tái)中則運(yùn)行了Kestrel Web服務(wù)器組件。Kestrel作為一款.NET Web服務(wù)器的實(shí)現(xiàn),它在吞吐量性能方面做了很多工作。它可以

    2024年01月21日
    瀏覽(24)
  • Win11安裝iis的兩種方法詳解

    Win11安裝iis的兩種方法詳解

    iis,也就是Internet Information Services,主要提供對(duì)WEB和FTP服務(wù)器的支持。那么win11新系統(tǒng)怎么安裝iis呢?下面小編就給大家整理了兩種安裝方法,快來(lái)了解一下吧。 方法一 1、可以在中間的底部Windows圖標(biāo)上單擊右鍵,打開(kāi)運(yùn)行(快捷鍵win+R)。 2、在運(yùn)行里面輸入appwiz.cpl 然后確

    2024年02月17日
    瀏覽(20)
  • ASP.NET Core應(yīng)用程序在IIS服務(wù)器上的運(yùn)行環(huán)境介紹和下載安裝(超詳細(xì))

    ASP.NET Core應(yīng)用程序在IIS服務(wù)器上的運(yùn)行環(huán)境介紹和下載安裝(超詳細(xì))

    要想在 IIS 上成功運(yùn)行 ASP.NET Core 應(yīng)用程序,我們需要有ASP.NET Core 運(yùn)行時(shí)和ASP.NET Core Module。而在這里我們僅需要下載ASP.NET Core Hosting Bundle 即可,這是為什么呢? 想了解的可以看文章末節(jié)的介紹。 ASP.NET 核心運(yùn)行時(shí)使你能夠運(yùn)行現(xiàn)有的 Web/服務(wù)器應(yīng)用程序。 在 Windows 上,我們

    2024年02月11日
    瀏覽(33)
  • ASP.NET Core 6框架揭秘實(shí)例演示[38]:兩種不同的限流策略

    ASP.NET Core 6框架揭秘實(shí)例演示[38]:兩種不同的限流策略

    承載ASP.NET應(yīng)用的服務(wù)器資源總是有限的,短時(shí)間內(nèi)涌入過(guò)多的請(qǐng)求可能會(huì)瞬間耗盡可用資源并導(dǎo)致宕機(jī)。為了解決這個(gè)問(wèn)題,我們需要在服務(wù)端設(shè)置一個(gè)閥門將并發(fā)處理的請(qǐng)求數(shù)量限制在一個(gè)可控的范圍,即使會(huì)導(dǎo)致請(qǐng)求的延遲響應(yīng),在極端的情況會(huì)還不得不放棄一些請(qǐng)求。

    2024年02月08日
    瀏覽(25)
  • ASP.NET Core教程:ASP.NET Core 程序部署到Windows系統(tǒng)

    ASP.NET Core教程:ASP.NET Core 程序部署到Windows系統(tǒng)

    本篇文章介紹如何將一個(gè)ASP.NET Core Web程序部署到Windows系統(tǒng)上。這里以ASP.NET Core WebApi為例進(jìn)行講解。首先創(chuàng)建一個(gè)ASP.NET Core WebApi項(xiàng)目,使用默認(rèn)的Values控制器,這里使用Visual Studio 2019創(chuàng)建一個(gè)ASP.NET Core 3.1d的WebApi項(xiàng)目。 創(chuàng)建新項(xiàng)目的時(shí)候選項(xiàng)ASP.NET Core Web應(yīng)用程序,如下圖所

    2023年04月08日
    瀏覽(103)
  • 課程32:.Net Core Web API部署IIS

    2024年02月04日
    瀏覽(33)
  • .net core項(xiàng)目部署在IIS上遇見(jiàn)的問(wèn)題

    .net core項(xiàng)目部署在IIS上遇見(jiàn)的問(wèn)題

    處理程序\\\"aspNetCore\\\"在其模塊列表中有一個(gè)錯(cuò)誤模塊\\\"AspNetCoreModuleV2\\\" (1)原因: IIS服務(wù)器上的.net core 運(yùn)行時(shí)不是最新的,導(dǎo)致AspNetCoreModuleV2模塊缺失或者報(bào)錯(cuò); (2)解決: ①.安裝“.Net Core Runtime” 需要安裝. Net Core Runtime ,安裝最新版 安裝鏈接 :https://dotnet.microsoft.com/downloa

    2024年02月07日
    瀏覽(29)
  • .NET Core 8  部署在 IIS 的簡(jiǎn)單三步

    .NET Core 8 部署在 IIS 的簡(jiǎn)單三步

    下載 dotnet-hosting-x.y.z-win.exe ,下載地址:.NET Downloads (Linux, macOS, and Windows) (microsoft.com) ? 選擇對(duì)應(yīng)的版本,點(diǎn)擊進(jìn)入詳細(xì)頁(yè),如 8.0 的版本: 版本最好和你的開(kāi)發(fā)環(huán)境版本一致,?比如我的開(kāi)發(fā)環(huán)境目前是 8.0.3,前幾天出了最新的版本,目前是8.0.4版本。 下載右邊的 Runtime?版

    2024年04月15日
    瀏覽(36)
  • 【ASP.NET Core 基礎(chǔ)知識(shí)】--最佳實(shí)踐和進(jìn)階主題--設(shè)計(jì)模式在ASP.NET Core中的應(yīng)用

    一、設(shè)計(jì)模式概述 1.1 什么是設(shè)計(jì)模式 設(shè)計(jì)模式是在軟件設(shè)計(jì)過(guò)程中反復(fù)出現(xiàn)的、經(jīng)過(guò)驗(yàn)證的、可重用的解決問(wèn)題的方法。它們是針對(duì)特定問(wèn)題的通用解決方案,提供了一種在軟件開(kāi)發(fā)中可靠的指導(dǎo)和標(biāo)準(zhǔn)化方法。設(shè)計(jì)模式通常描述了一種在特定情景下的解決方案,包括了問(wèn)

    2024年02月21日
    瀏覽(850)
  • .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問(wèn)題解決

    .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問(wèn)題解決

    之前做了一個(gè)WebAPI的項(xiàng)目,我在文章中寫(xiě)到的是Docker方式部署,然后考慮到很多初學(xué)者用的是iis,下面講解下iis如何部署WebAPI項(xiàng)目。 iis ASPNETCoreModuleV2 重點(diǎn) .NET Core Runtime iis的配置這里就不講了,主要講解.NET Core項(xiàng)目部署之后Swagger無(wú)法訪問(wèn)問(wèn)題。 ASPNETCoreModuleV2 安裝: https:/

    2024年03月09日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包