Compartilhar via


Hospedar e implantar ASP.NET Core Blazor WebAssembly com o IIS

Observação

Esta não é a versão mais recente deste artigo. Para informações sobre a versão vigente, confira a versão .NET 9 deste artigo.

Aviso

Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, consulte a Política de Suporte do .NET e do .NET Core. Para informações sobre a versão vigente, confira a versão .NET 9 deste artigo.

Importante

Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.

Para informações sobre a versão vigente, confira a versão .NET 9 deste artigo.

Este artigo explica como hospedar e implantar Blazor WebAssembly usando o IIS (Serviços de Informações da Internet).

O IIS é um servidor de arquivos estático compatível com aplicativos do Blazor. Para configurar o IIS para hospedar o Blazor, confira Criar um site estático no IIS.

Os ativos publicados são criados na pasta /bin/Release/{TARGET FRAMEWORK}/publish ou bin\Release\{TARGET FRAMEWORK}\browser-wasm\publish, dependendo da versão do SDK utilizada, e onde o marcador de posição {TARGET FRAMEWORK} é o framework de destino. Hospede o conteúdo da pasta publish no servidor Web ou no serviço de hospedagem.

Arquivo web.config

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

  • tipos MIME
  • A compactação HTTP está habilitada para os seguintes tipos MIME:
    • application/octet-stream
    • application/wasm
  • As regras do Módulo de Reescrita de URL são estabelecidas:
    • Atender ao subdiretório em que residem os ativos estáticos do aplicativo (wwwroot/{PATH REQUESTED}).
    • Criar o roteamento de fallback do SPA para que as solicitações de ativos que não sejam arquivos sejam redirecionadas ao documento padrão do aplicativo, localizado na pasta de ativos estáticos (wwwroot/index.html).

Uso de um web.config personalizado

Para usar um arquivo web.config personalizado:

  1. Coloque o arquivo web.config personalizado na pasta raiz do projeto.
  2. Publique o projeto. Para obter mais informações, confira Hospedar e implantar ASP.NET CoreBlazor.
  1. Coloque o arquivo web.config personalizado na pasta raiz do projeto. Para uma Blazor WebAssemblysolução hospedada, coloque o arquivo na pasta do projeto Server.
  2. Publique o projeto. Para uma solução Blazor WebAssembly hospedada, publique a solução no projeto Server. Para obter mais informações, confira Hospedar e implantar ASP.NET CoreBlazor.

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

  • Se o SDK não gerar o arquivo, por exemplo, em um aplicativo autônomo Blazor WebAssembly em /bin/Release/{TARGET FRAMEWORK}/publish/wwwroot ou bin\Release\{TARGET FRAMEWORK}\browser-wasm\publish, dependendo de qual versão do SDK é usada e onde o espaço reservado {TARGET FRAMEWORK} é a estrutura de destino, defina a propriedade <PublishIISAssets> como true no arquivo de projeto (.csproj). Normalmente, para aplicativos autônomos do WebAssembly, essa é a única configuração necessária para mover um arquivo web.config personalizado e impedir a transformação do arquivo pelo SDK.

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

    <PropertyGroup>
      <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    </PropertyGroup>
    
  • Adicione um destino personalizado ao arquivo de projeto (.csproj) para mover um arquivo web.config personalizado. No exemplo a seguir, o arquivo web.config personalizado é colocado pelo desenvolvedor na raiz do projeto. Se o arquivo web.config residir em outro lugar, especifique o caminho para o arquivo em SourceFiles. O exemplo a seguir especifica a pasta publish com $(PublishDir), mas fornece um caminho para DestinationFolder em um local de saída personalizado.

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

Instale o Módulo de Reescrita de URL

O Módulo de Reescrita de URL é necessário para reescrever URLs. Por padrão, o módulo não está instalado e não está disponível para instalação como um recurso do serviço de função do servidor Web (IIS). O módulo precisa ser baixado do site do IIS. Use o Web Platform Installer para instalar o módulo:

  1. Localmente, navegue até a página de downloads do Módulo de Reescrita de URL. Para obter a versão em inglês, selecione WebPI para baixar o instalador do WebPI. Para outros idiomas, selecione a arquitetura apropriada para o servidor (x86/x64) para baixar o instalador.
  2. Copie o instalador para o servidor. Rode o instalador. Selecione o botão Instalar e aceite os termos de licença. Uma reinicialização do servidor não será necessária após a conclusão da instalação.

Configuração do site

Defina o Caminho físico do site para a pasta do aplicativo. A pasta contém:

  • O arquivo web.config que o IIS usa para configurar o site, incluindo as regras de redirecionamento e os tipos de conteúdo do arquivo necessários.
  • A pasta de ativos estática do aplicativo.

Hospedar como um subaplicativo do IIS

Se um aplicativo autônomo estiver hospedado como subaplicativo do IIS, execute um dos seguintes procedimentos:

  • Desabilite o manipulador de Módulo do ASP.NET Core herdado.

    Remova o manipulador no arquivo Blazor publicado do aplicativo web.config adicionando uma seção <handlers> à seção <system.webServer> do arquivo:

    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    
  • Desabilite a herança da seção <system.webServer> do aplicativo raiz (pai) 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

    Desabilitar a herança da seção <system.webServer> do aplicativo raiz (pai) é a configuração padrão para aplicativos publicados usando o SDK do .NET.

A remoção do manipulador ou a desativação da herança são realizadas além da configuração do caminho base do aplicativo. Defina o caminho base do aplicativo no arquivo index.html para o alias do IIS usado ao configurar o subaplicativo no IIS.

Configure o caminho base do aplicativo seguindo as diretrizes no caminho base do aplicativo ASP.NET CoreBlazor.

Compactação de Brotli e Gzip

Esta seção se aplica apenas a aplicativos Blazor WebAssembly autônomos.

Esta seção só se aplica a aplicativos autônomos Blazor WebAssembly. Os aplicativos hospedados do Blazor usam um arquivo padrão do aplicativo ASP.NET Core web.config, não o arquivo vinculado nesta seção.

O IIS pode ser configurado por meio do web.config para atender a ativos Blazor com compactação de Brotli ou Gzip para aplicativos autônomos Blazor WebAssembly. Para ver um arquivo de configuração de exemplo, confira web.config.

A configuração adicional do arquivo de exemplo web.config pode ser necessária nos seguintes cenários:

  • A especificação do aplicativo exige um dos seguintes:
    • Servindo arquivos compactados que não estão configurados pelo arquivo de exemplo web.config.
    • Servindo arquivos compactados configurados pelo arquivo de exemplo web.config em formato não compactado.
  • A configuração do IIS do servidor (por exemplo, applicationHost.config) fornece padrões do IIS no nível do servidor. Dependendo da configuração no nível do servidor, o aplicativo pode exigir uma configuração diferente do IIS em relação à que o arquivo web.config de exemplo contém.

Para obter mais informações sobre arquivos personalizados web.config, consulte a seção Uso de um web.config personalizado.

Resolução de problemas

Se um 500 – Erro Interno do Servidor for recebido e o Gerenciador do IIS gerar erros ao tentar acessar a configuração do site, confirme se o Módulo de Regeneração de URL está instalado. Quando o módulo não estiver instalado, o arquivo web.config não poderá ser analisado pelo IIS. Isso impede que o Gerenciador do IIS carregue a configuração do site e que o site atenda aos arquivos estáticos do Blazor.

Para obter mais informações sobre a solução de problemas de implantações no IIS, confira Solucionar problemas do ASP.NET Core no Serviço de Aplicativo Azure e no IIS.