Partilhar via


Hospedar e implementar ASP.NET Core Blazor WebAssembly com IIS

Observação

Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 10 deste artigo.

Advertência

Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.

Este artigo explica como alojar e implementar Blazor WebAssembly utilizando Serviços de Informação da Internet (IIS).

O IIS é um servidor de ficheiros estático capaz para Blazor aplicações. Para configurar o IIS para hospedar Blazor, veja Construir um Website Estático no IIS.

Os recursos publicados são criados na pasta /bin/Release/{TARGET FRAMEWORK}/publish ou bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish, onde o marcador {TARGET FRAMEWORK} é o framework de destino. Aloja o conteúdo da publish pasta no servidor web ou serviço de alojamento.

arquivo web.config

Quando um Blazor projeto é publicado, é criado um web.config ficheiro com a seguinte configuração IIS:

  • Tipos MIME
  • A compressão HTTP está ativada para os seguintes tipos MIME:
    • application/octet-stream
    • application/wasm
  • As regras do Módulo de Reescrita de URL são estabelecidas:
    • Servir o subdiretório onde residem os ativos estáticos da aplicação (wwwroot/{PATH REQUESTED}).
    • Criar o roteamento de fallback SPA para que os pedidos de recursos que não sejam ficheiros sejam redirecionados para o documento padrão da aplicação na sua pasta de recursos estáticos (wwwroot/index.html).

Utilização de um personalizado web.config

Para usar um ficheiro personalizado web.config :

  1. Coloque o ficheiro personalizado web.config na pasta raiz do projeto.
  2. Publica o projeto. Para obter mais informações, consulte Hospedar e implantar ASP.NET Core Blazor.
  1. Coloque o ficheiro personalizado web.config na pasta raiz do projeto. Para uma Blazor WebAssembly alojada, coloque o ficheiro na Server pasta do projeto.
  2. Publica o projeto. Para uma solução Blazor WebAssembly alojada, publique a solução a partir do projeto Server. Para obter mais informações, consulte Hospedar e implantar ASP.NET Core Blazor.

Se a geração ou transformação do web.config SDK durante a publicação não mover o ficheiro para os ativos publicados na pasta publish ou modificar a configuração personalizada no seu ficheiro personalizado web.config, utilize uma das seguintes abordagens conforme necessário para assumir o controlo total do processo:

  • Se o SDK não gerar o ficheiro, por exemplo, numa aplicação autónoma em Blazor WebAssembly ou /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot, onde o marcador de posição bin/Release/{TARGET FRAMEWORK}/browser-wasm/publish é o framework alvo, defina a propriedade {TARGET FRAMEWORK} como <PublishIISAssets> no ficheiro do projeto (true). Normalmente, para aplicações WebAssembly autónomas, esta é a única configuração necessária para mover um ficheiro personalizado web.config e evitar a transformação do ficheiro pelo SDK.

    <PropertyGroup>
      <PublishIISAssets>true</PublishIISAssets>
    </PropertyGroup>
    
  • Desative a transformação do web.config SDK no ficheiro do projeto (.csproj):

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • Adicione um alvo personalizado ao ficheiro do projeto (.csproj) para mover um ficheiro personalizado web.config . No exemplo seguinte, o ficheiro personalizado web.config é colocado pelo programador na raiz do projeto. Se o web.config ficheiro estiver noutro local, especifique o caminho para o ficheiro em SourceFiles. O exemplo seguinte especifica a publish pasta com $(PublishDir), mas fornece um caminho para DestinationFolder para uma localização de saída personalizada.

    <Target Name="CopyWebConfig" AfterTargets="Publish">
      <Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
    </Target>
    

Instalar o Módulo de Reescrita de URL

O Módulo de Reescrita de URLs é necessário para reescrever URLs. O módulo não está instalado por padrão, e não está disponível para instalação como uma funcionalidade de serviço de função no Web Server (IIS). O módulo deve ser descarregado do site do IIS. Use o Instalador da Plataforma Web para instalar o módulo:

  1. Localmente, navegue até à página de downloads do Módulo de Reescrita URL. Para a versão em inglês, selecione WebPI para descarregar o instalador WebPI. Para outras linguagens, selecione a arquitetura apropriada para o servidor (x86/x64) para descarregar o instalador.
  2. Copie o instalador para o servidor. Executar o instalador. Selecione o botão Instalar e aceite os termos da licença. Não é necessário reiniciar o servidor após a conclusão da instalação.

Configurar o site

Defina o caminho físico do site para a pasta da aplicação. A pasta contém:

  • O web.config ficheiro que o IIS utiliza para configurar o site, incluindo as regras de redirecionamento necessárias e os tipos de conteúdo do ficheiro.
  • A pasta de ativos estáticos da aplicação.

Host como sub-aplicação IIS

Se uma aplicação autónoma estiver alojada como uma sub-aplicação IIS, execute uma das seguintes opções:

  • Desative o gestor do Módulo ASP.NET Core herdado.

    Remova o handler do ficheiro publicado Blazor da aplicação adicionando uma secção web.config à secção <handlers> do ficheiro:

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Desative a herança da secção raiz (pai) da aplicação <system.webServer> usando um elemento <location> com inheritInChildApplications definido como false:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" ... />
          </handlers>
          <aspNetCore ... />
        </system.webServer>
      </location>
    </configuration>
    

    Observação

    A desativação da herança da secção da aplicação principal (mãe) <system.webServer> é a configuração padrão para aplicações publicadas através do SDK .NET.

A remoção do handler ou desativação da herança é feita além de configurar o caminho base da aplicação. Defina o caminho da base da aplicação no ficheiro da aplicação index.html para o alias IIS usado ao configurar a subaplicação no IIS.

Configure o caminho base da aplicação seguindo as instruções em caminho base da aplicação do ASP.NET CoreBlazor.

Compressão Brotli e Gzip

Esta secção aplica-se apenas a aplicações autónomas Blazor WebAssembly .

Esta secção aplica-se apenas a aplicações autónomas Blazor WebAssembly . As aplicações alojadas Blazor usam um ficheiro ASP.NET Core web.config por defeito, não o ficheiro ligado nesta secção.

O IIS pode ser configurado através de web.config para servir de ativos comprimidos Brotli ou Gzip para aplicações autónomas Blazor. Para um ficheiro de configuração de exemplo, veja web.config.

Pode ser necessária uma configuração adicional do ficheiro de exemplo web.config nos seguintes cenários:

  • A especificação da aplicação exige uma das seguintes opções:
    • Servir ficheiros comprimidos que não estão configurados pelo ficheiro de exemplo web.config .
    • Servir ficheiros comprimidos configurados pelo ficheiro de exemplo web.config num formato não comprimido.
  • A configuração do IIS do servidor (por exemplo, applicationHost.config) fornece os valores predefinidos do IIS ao nível do servidor. Dependendo da configuração ao nível do servidor, a aplicação pode exigir uma configuração IIS diferente daquela que o ficheiro de exemplo web.config contém.

Para mais informações sobre ficheiros personalizados web.config , consulte a secção Utilização de um ficheiro personalizado web.config .

Solução de problemas

Se for recebido um 500 - Erro Interno do Servidor e o IIS Manager lançar erros ao tentar aceder à configuração do website, confirme que o Módulo de Reescrita de URL está instalado. Quando o módulo não está instalado, o web.config ficheiro não pode ser analisado pelo IIS. Isto impede que o Gestor IIS carregue a configuração do site e que o site sirva Blazoros ficheiros estáticos.

Para mais informações sobre resolução de problemas de implementações para IIS, consulte Troubleshoot ASP.NET Core no Azure App Service e IIS.