Dois dias atrás, reimprimi uma análise de inicialização do .NET core, porque eu estava preso na porta padrão 5000 quando foi lançada, então estudei com atenção.
1. Integração com IIS
Se você usa IIS como host, então isso não é um problema, um IIS poderoso pode nos ajudar a configurar o nome de domínio, porta, etc. do site. Quanto a como implantar uma aplicação web asp.net core no IIS, esse não é o ponto aqui. Descreva de forma aproximada:
Você precisa baixar o SDK do Net Core e a hospedagem do servidor, e o endereço de download é https://www.microsoft.com/net/download
Após a instalação, verifique se o SDK do .NET Core está instalado com sucesso nas informações do ponto de linha de comando
Se o host do servidor está instalado com sucesso no módulo IIS e no mapeamento do handler está mostrado abaixo
Depois, configure o site e especifique os arquivos para o site de publicação
Por fim, o pool de programas deve ser configurado e escolher não gerenciado, para que haja uma requisição de encaminhamento do host do servidor.
2. Ambiente Linux
Sem falar na instalação específica, também há muitos. De acordo com as instruções no site oficial, ou seja, instale o ambiente de execução do .NET Core e ele pode rodar.
Aqui está um post recomendado para sua própria referência: Implantando ASP.NET aplicações Core para produção (CentOS7)
Voltando ao ponto principal, como configurar parâmetros de URL e porta
1. Especificar no método principal do programa
Essa abordagem é inflexível e não tão elegante, mesmo que seja lida adicionando um arquivo de configuração. Naquela época, senti que a Microsoft definitivamente não recomendaria esse tipo de uso, então continuei procurando por isso.
2. Passar a variável ambiente
Vi um artigo na Internet sobre como configurar URLs de Kestrel no ASP.NET Core RC2,
Embora ainda esteja configurado pelo arquivo de configuração, não precisa ler as informações de configuração para outros artigos, e pode ser usado diretamente vinculando ou colando o código para ver:
hosting.json
Program.cs
Dessa forma, ele também pode ouvir
Agora ouvindo: http://localhost:60000
Agora ouvindo: http://localhost:60001
Não é incrível! Não suporto o combate em si, deduza o código-fonte! De longe, a melhor coisa do .NET Core é que ele tem código-fonte!
Pela fonte, podemos saber que é principalmente a classe WebHostBuilder, sob o namespace Microsoft.AspNetCore.Hosting.
O método principal é Build
O foco principal aqui é construir um objeto WebHost e depois olhar mais além
Ao analisar o código-fonte pelo método Initialize, podemos saber o endereço URL criado pelo método EnsureServer
Aqui podemos ver que ele lê _config[WebHostDefaults.ServerUrlsKey] e _config[DeprecatedServerUrlsKey] da configuração.
O valor de WebHostDefaults.ServerUrlsKey é um valor fixo
O valor de DeprecatedServerUrlsKey é definido no início do objeto WebHost
Oh! A verdade é revelada. Então podemos definir "server.urls" no arquivo de configuração.
Resumo:
Resumindo, asp.net núcleo vai ler a configuração na variável ambiente quando ela inicia, e o objetivo real é adicionar a seguinte configuração às propriedades do projeto:
Ele foi iniciado no modo console e descobriu que a versão foi alterada.
Então, este é um ambiente de desenvolvimento, como implantá-lo na linha de produção? Isso também é muito simples, tomando a implantação do Linux como exemplo, usando o supervisor do daemon para iniciar o programa, adicionar variáveis de ambiente à configuração de inicialização do supervisor:
Tenha sucesso com louvor! Nem uma linha de código precisa ser alterada, haha~ |