iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >ASP.NET Core怎么配置和管理Web主机
  • 467
分享到

ASP.NET Core怎么配置和管理Web主机

2023-06-29 22:06:58 467人浏览 薄情痞子
摘要

本篇内容主要讲解“asp.net Core怎么配置和管理WEB主机”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.net Core怎么配置和管理Web主机”吧!1.前言

本篇内容主要讲解“asp.net Core怎么配置和管理WEB主机”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.net Core怎么配置和管理Web主机”吧!

    1.前言

    ASP.net core应用程序可以配置和启动主机(Host)。主机负责应用程序启动和生命周期管理,配置服务器和请求处理管道。主机还可以设置日志记录、依赖关系注入和配置。而Host主机又包括Web主机(IWebHostBuilder)和通用主机(IHostBuilder)。该章节主要介绍了用于托管Web应用的Web主机。对于其他类型的应用,请使用通用主机。

    2.设置主机

    创建使用IWebHostBuilder实例的主机。通常在应用程序的入口点来执行Main方法。在项目模板中,Main位于Program.cs。典型应用默认调用CreateDefaultBuilder来开始创建主机:

    public class Program{    public static void Main(string[] args)    {        CreateWebHostBuilder(args).Build().Run();    }    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>        WebHost.CreateDefaultBuilder(args)            .UseStartup<Startup>();}

    2.1执行下列任务

    调用CreateDefaultBuilder的代码位于名为CreateWebHostBuilder的方法中,这让它区分于 Main中对生成器对象调用Run的代码。CreateDefaultBuilder执行下列任务:
    ●使用应用程序的托管配置提供应用程序将Kestrel服务器配置为Web服务器。
    ●将内容根设置为由 Directory.GetCurrentDirectory返回的路径。
    ●通过以下对象加载主机配置:
      ○前缀为ASPnetcore_的环境变量(例如,ASPNETCORE_ENVIRONMENT)。
      ○命令行参数。
    ●按以下顺序加载应用程序配置:
      ○appsettings.JSON
      ○appsettings.{Environment}.json。
      ○应用在使用入口程序集的Development环境中运行时的机密管理器。
      ○环境变量。
      ○命令行参数。
    ●配置控制台和调试输出的日志记录。日志记录包含appsettings.json或appsettings.{Environment}.json文件的日志记录配置部分中指定的日志筛选规则。
    ●使用ASP.net core模块在IIS后面运行时,CreateDefaultBuilder会启用IIS集成,这会配置应用程序的基址和端口。IIS集成还配置应用程序以捕获启动错误。
    ●如果应用环境为“开发(Development)”,请将ServiceProviderOptions.ValidateScopes设为true。

    2.2重写和增强定义的配置

    ConfigureAppConfiguration、ConfigureLogging以及IWebHostBuilder的其他方法和扩展方法可重写和增强CreateDefaultBuilder定义的配置。下面是一些示例:
    ConfigureAppConfiguration:用于指定应用程序的其他IConfiguration。下面的ConfigureAppConfiguration调用添加委托,以在appsettings.xml文件中添加应用程序配置,该示例在Core系列第11章节有演示。可多次调用ConfigureAppConfiguration。请注意,此配置不适用于主机(例如,服务器URL或环境)。

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>    WebHost.CreateDefaultBuilder(args)    .ConfigureAppConfiguration((hostinGContext, config) =>    {        config.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true);});

    ConfigureLogging:ConfigureLogging调用添加委托,将最小日志记录级别 (SetMinimumLevel)配置为LogLevel.Warning。此设置重写CreateDefaultBuilder在appsettings.Development.json和appsettings.Production.json中配置,分别为LogLevel.Debug和LogLevel.Error。可多次调用 ConfigureLogging。

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args)    .ConfigureLogging(logging =>    {        logging.SetMinimumLevel(LogLevel.Warning);});

    ConfigureKestrel:调用ConfigureKestrel来重写CreateDefaultBuilder在配置Kestrel时建立的30,000,000字节默认Limits.MaxRequestBodySize:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args)    .ConfigureKestrel((context, options) =>    {        options.Limits.MaxRequestBodySize = 20000000;});

    设置主机时,可以提供配置和ConfigureServices方法。如果指定Startup类,必须定义Configure方法。

    3.主机配置值

    WebHostBuilder依赖于以下的方法设置主机配置值:
    ●主机生成器配置,其中包括格式ASPNETCORE_{configurationKey}的环境变量。例如 ASPNETCORE_ENVIRONMENT。
    ●UseContentRoot和UseConfiguration等扩展。
    ●UseSetting和关联键。使用UseSetting设置值时,该值设置为无论何种类型的字符串

    3.1应用程序键(名称)

    在主机构造期间调用UseStartup或Configure时,会自动设置 IHostingEnvironment.ApplicationName属性。该值设置为包含应用入口点的程序集的名称。要显式设置值,请使用WebHostDefaults.ApplicationKey(环境变量:ASPNETCORE_APPLICATIONNAME):

    public void Configure(IApplicationBuilder app, IHostingEnvironment env){    //应用程序默认名称为:CoreWeb (也就是项目名称)  string an = env.ApplicationName;  ...}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>    WebHost.CreateDefaultBuilder(args).UseStartup<Startup>()           .UseSetting(WebHostDefaults.ApplicationKey, "CoreWeb");

    3.2捕获启动错误

    此设置控制启动错误的捕获。当false时,启动期间出错导致主机退出。当true时,主机在启动期间捕获异常并尝试启动服务器(环境变量:ASPNETCORE_CAPTURESTARTUPERRORS)。

    WebHost.CreateDefaultBuilder(args)    .CaptureStartupErrors(true)

    3.3内容根

    此设置确定ASP.Net Core开始搜索内容文件,如mvc视图等。内容根也用作Web根设置的基路径。如果路径不存在,主机将无法启动(环境变量:ASPNETCORE_CONTENTROOT)。

    WebHost.CreateDefaultBuilder(args)    .UseContentRoot("c:\\<content-root>")

    3.4详细错误

    确定是否应捕获详细错误。启用(或当环境设置为Development)时,应用捕获详细的异常(环境变量:ASPNETCORE_DETAILEDERRORS)。

    WebHost.CreateDefaultBuilder(args)    .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")

    3.5环境

    设置应用程序的环境。环境可以设置为任何值。框架定义的值包括Development、Staging和Production。值不区分大小写。默认情况下,从ASPNETCORE_ENVIRONMENT环境变量读取环境。使用Visual Studio时,可能会在launchSettings.json文件中设置环境变量。有关于环境详情信息,可以移步到Core系列第10章节有参阅(环境变量:ASPNETCORE_ENVIRONMENT)。

    WebHost.CreateDefaultBuilder(args)    .UseEnvironment(EnvironmentName.Development)

    3.6https端口

    设置HttpS重定向端口。用于强制实施HTTPS(环境变量:ASPNETCORE_HTTPS_PORT)。

    WebHost.CreateDefaultBuilder(args)    .UseSetting("https_port", "8080")

    3.7服务器(Kestrel) URL

    指示IP地址或主机地址,其中包含服务器应针对请求侦听的端口和协议。设置为服务器应响应的以分号分隔 (;) 的URL前缀列表。例如 http://localhost:123。使用“*”指示服务器应针对请求侦听的使用特定端口和协议(例如 http://*:5000)的IP地址或主机名。协议(http://或https://)必须包含每个URL。不同的服务器支持的格式有所不同(环境变量:ASPNETCORE_URLS)。

    WebHost.CreateDefaultBuilder(args)    .UseUrls("https://*:5000;https://localhost:5001;https://hostname:5002")

    ASP.NET Core怎么配置和管理Web主机

    ASP.NET Core怎么配置和管理Web主机

    4.重写配置

    使用配置可以配置Web主机。在下面的示例中,主机配置是根据需要在hostsettings.json文件中指定。命令行参数可能会重写从hostsettings.json文件加载的任何配置。生成的配置(在config中)用于通过UseConfiguration配置主机。
    新建一个hostsettings.json文件,内容如下:

    {  "urls": "https://*:5005"}
    public static IWebHostBuilder CreateWebHostBuilder(string[] args){    //IConfigurationBuilder的配置主机    var config = new ConfigurationBuilder()        .SetBasePath(Directory.GetCurrentDirectory())        //主机配置在hostsettings.json文件中指定        .AddJsonFile("hostsettings.json", optional: true)        //输入的命令行参数可能会重写从hostsettings.json文件加载的任何配置        .AddCommandLine(args)        .Build();    return WebHost.CreateDefaultBuilder(args)        .UseUrls("https://*:5001")        .UseConfiguration(config)        .Configure(app =>        {            //生成的配置委托函数            app.Run(context =>                context.Response.WriteAsync("Hello, World!"));        });}

    上述代码描述意思是若要指定在特定的URL上运行的主机,所需的值可以在执行dotnet运行时从命令提示符传入。命令行参数重写hostsettings.json文件中的urls值,且服务器侦听端口8080:

    dotnet run --urls "http://*:8080"

    主机启动时,先用hostsettings.json config重写UseUrls提供的urls参数配置,然后再用命令行参数config重写hostsettings.json config的urls参数配置。

    5.管理主机

    管理主机启动方式有Run和Start两种。Run方法启动Web应用程序并阻止调用线程,直到关闭主机。Start方法通过调用自身以非阻止方式运行主机。

    //RunCreateWebHostBuilder(args).Build().Run();
    //Start:非阻止方式,所有必须加上ReadLineCreateWebHostBuilder(args).Build().Start();Console.ReadLine();

    6.IHostingEnvironment接口

    IHostingEnvironment接口提供有关应用的Web承载环境的信息。使用构造函数注入获取 IHostingEnvironment以使用其属性和扩展方法:

    //示例1:public class CustomFileReader{    private readonly IHostingEnvironment _env;    public CustomFileReader(IHostingEnvironment env)    {        _env = env;    }    public string ReadFile(string filePath)    {        var fileProvider = _env.WebRootFileProvider;        // Process the file here    }}

    可以用于在启动时基于环境配置应用程序或者将IHostingEnvironment注入到Startup构造函数,用于ConfigureServices:

    //示例2:public class Startup{    public Startup(IHostingEnvironment env)    {        HostingEnvironment = env;    }    public IHostingEnvironment HostingEnvironment { get; }    public void ConfigureServices(IServiceCollection services)    {        if (HostingEnvironment.IsDevelopment())        {            // Development configuration        }        else        {            // Staging/Production configuration        }        var contentRootPath = HostingEnvironment.ContentRootPath;    }}

    IHostingEnvironment服务还可以直接注入到Configure方法以设置处理管道:

    //示例3:public void Configure(IApplicationBuilder app, IHostingEnvironment env){    if (env.IsDevelopment())    {        // In Development, use the Developer Exception Page        app.UseDeveloperExceptionPage();    }    else    {        // In Staging/Production, route exceptions to /error        app.UseExceptionHandler("/error");    }    var contentRootPath = env.ContentRootPath;}

    创建自定义中间件(要了解中间件的同学们,可以移步到第四章节学习)时可以将IHostingEnvironment 注入Invoke方法:

    public async Task Invoke(HttpContext context, IHostingEnvironment env){    if (env.IsDevelopment())    {        // Configure middleware for Development    }    else    {        // Configure middleware for Staging/Production    }    var contentRootPath = env.ContentRootPath;}

    7.IApplicationLifetime接口

    IApplicationLifetime允许后启动和关闭活动。接口上的三个属性是用于注册Action方法(用于定义启动和关闭事件)的取消标记。

    取消标记

    触发条件

    ApplicationStarted

    主机已完全启动。

    ApplicationStopped

    主机正在完成正常关闭。应处理所有请求。 关闭受到阻止,直到完成此事件。

    ApplicationStopping

    主机正在执行正常关闭。仍在处理请求。关闭受到阻止,直到完成此事件。

    public class Startup{    public void Configure(IApplicationBuilder app, IApplicationLifetime appLifetime)    {        appLifetime.ApplicationStarted.ReGISter(OnStarted);        appLifetime.ApplicationStopping.Register(OnStopping);        appLifetime.ApplicationStopped.Register(OnStopped);        Console.CancelkeyPress += (sender, eventArgs) =>        {            appLifetime.StopApplication();            // Don't terminate the process immediately, wait for the Main thread to exit gracefully.            eventArgs.Cancel = true;        };    }    private void OnStarted()    {        // PerfORM post-startup activities here    }    private void OnStopping()    {        // Perform on-stopping activities here    }    private void OnStopped()    {        // Perform post-stopped activities here    }}

    StopApplication是请求应用终止的意思。以下类在调用类的Shutdown方法时使用StopApplication正常关闭应用:

    public class MyClass{    private readonly IApplicationLifetime _appLifetime;    public MyClass(IApplicationLifetime appLifetime)    {        _appLifetime = appLifetime;    }    public void Shutdown()    {        _appLifetime.StopApplication();    }}

    8.作用域验证

    如果应用环境为“开发(Development)”,则CreateDefaultBuilder将ServiceProviderOptions.ValidateScopes设为true。若将ValidateScopes设为true,默认服务提供应用程序会执行检查来验证以下内容:
    ●作用域服务不能直接或间接地从根服务提供者解析。
    ●作用域服务不会直接或间接地注入到单例中(服务的生命周期)。
    若要始终验证作用域(包括在生命周期环境中验证),请使用主机生成器上的 UseDefaultServiceProvider配置ServiceProviderOptions:

    WebHost.CreateDefaultBuilder(args)    .UseDefaultServiceProvider((context, options) => {        options.ValidateScopes = true;})

    到此,相信大家对“ASP.NET Core怎么配置和管理Web主机”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: ASP.NET Core怎么配置和管理Web主机

    本文链接: https://www.lsjlt.com/news/326516.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • ASP.NET Core怎么配置和管理Web主机
      本篇内容主要讲解“ASP.NET Core怎么配置和管理Web主机”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET Core怎么配置和管理Web主机”吧!1.前言...
      99+
      2023-06-29
    • ASP.NET Core配置和管理Web主机
      目录1.前言2.设置主机2.1执行下列任务2.2重写和增强定义的配置3.主机配置值3.1应用程序键(名称)3.2捕获启动错误3.3内容根3.4详细错误3.5环境3.6HTTPS端口3...
      99+
      2024-04-02
    • ASP.NET Core通用主机的系统怎么配置
      本篇内容介绍了“ASP.NET Core通用主机的系统怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET Cor...
      99+
      2023-07-02
    • ASP.NET Core通用主机的系统配置
      ASP.NET Core 2.0 中的 WebHost(实现 IWebHost 的基类)是用于为进程提供 HTTP 服务器功能的基础结构项目,例如,如果...
      99+
      2024-04-02
    • asp.net虚拟主机怎么创建和配置
      要创建和配置ASP.NET虚拟主机,需要按照以下步骤进行操作:1. 选择合适的虚拟主机提供商,购买虚拟主机服务。2. 登录虚拟主机控...
      99+
      2023-05-29
      asp.net虚拟主机 虚拟主机
    • ASP.NET Core中的Configuration怎么配置
      这篇文章主要讲解了“ASP.NET Core中的Configuration怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET Core中的Configu...
      99+
      2023-06-29
    • ASP.NET Core中的环境怎么配置
      这篇文章主要介绍了ASP.NET Core中的环境怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core中的环境怎么配置文章都会有所收获,下面我们一起来看看吧。1.环...
      99+
      2023-06-29
    • ASP.NET Core怎么管理应用程序状态
      这篇文章主要介绍了ASP.NET Core怎么管理应用程序状态的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core怎么管理应用程序状态文章都会有所收获,下面我们一起来看看吧...
      99+
      2023-06-30
    • ASP.NET Core中的Options选项模式怎么配置
      这篇文章主要介绍“ASP.NET Core中的Options选项模式怎么配置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ASP.NET Core中的Options选项模式怎么配...
      99+
      2023-06-29
    • ASP.net Core微信平台开发怎么配置Token
      今天小编给大家分享一下ASP.net Core微信平台开发怎么配置Token的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
      99+
      2023-06-30
    • 国外的云主机管理系统怎么配置
      配置国外的云主机管理系统的步骤如下:1. 选择合适的云主机管理系统:根据自己的需求和预算选择适合的云主机管理系统,常见的系统有Ope...
      99+
      2023-09-22
      国外云主机 云主机
    • 国内虚拟主机管理系统怎么配置
      配置国内虚拟主机管理系统需要以下步骤:1. 安装系统:首先,需要选择一款虚拟主机管理系统,如WHMCS、HostBill等,并在服务...
      99+
      2023-09-07
      国内虚拟主机 虚拟主机
    • 云服务器怎么配置管理器的主机
      云服务器的配置管理器有很多配置选项,可以根据您的具体需求进行配置。以下是一些常见配置选项: 主机名称: 可以指定您想让云服务器使用的主机名称,例如 Azure Area。 主机路径: 可以指定您想让云服务器使用的主机的 IP 地址或端口...
      99+
      2023-10-27
      管理器 主机 服务器
    • asp.net虚拟主机创建和配置的方法是什么
      ASP.NET虚拟主机的创建和配置方法如下:1. 选择一个合适的ASP.NET虚拟主机提供商,注册并购买相应的虚拟主机服务。2. 登...
      99+
      2023-06-07
      asp.net虚拟主机 虚拟主机
    • C#怎么用ASP.NET Core开发学生管理系统
      本篇内容介绍了“C#怎么用ASP.NET Core开发学生管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!涉及知识点开发学生...
      99+
      2023-06-22
    • asp.net虚拟主机配置访问不了怎么解决
      以下是一些可能的解决方案:1. 检查虚拟主机的配置是否正确。确保已将正确的域名绑定到虚拟主机,并且已正确设置了应用程序池、物理路径等...
      99+
      2023-06-05
      asp.net虚拟主机 虚拟主机
    • 云服务器怎么配置管理器的主机地址
      首先,我们需要了解云服务器的主机地址类型。常见的云服务器主机地址类型包括以下几种: VMware虚拟机:VMware虚拟机是一种基于虚拟化技术的云计算平台,可为用户提供各种虚拟机服务。用户可以根据自己的需求选择不同的虚拟机类型,如VMw...
      99+
      2023-10-27
      管理器 主机 地址
    • 云服务器怎么配置管理器的主机信息
      首先,登录阿里云控制台(https://www.aliyun.com/),然后点击左边的“云服务器”栏目,选择“实例”,点击右上角的“创建实例”按钮。 在创建实例界面中,输入实例的主机信息,例如主机名、IP地址、端口号等,然后点击“创建”...
      99+
      2023-10-27
      管理器 主机 服务器
    • asp.net core实体类怎么生产CRUD后台管理界面
      今天小编给大家分享一下asp.net core实体类怎么生产CRUD后台管理界面的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
      99+
      2023-06-30
    • asp.net虚拟主机配置网页访问不了怎么解决
      1. 确认虚拟主机配置正确:检查虚拟主机配置是否正确,包括端口、IP地址、主机名等,确保它们与网站代码中的设置一致。2. 检查防火墙...
      99+
      2023-06-11
      asp.net虚拟主机 虚拟主机
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作