Lado do servidor Blazor atrás do proxy reverso 404

10

Eu tenho um aplicativo blazor do lado do servidor hospedado no IIS atrás de um proxy reverso (usando ARR).

Eu tentei tudo o que consigo pensar, mas continuo recebendo 404

_framework / blazor.server.js

Meu href base está definido como "/ subsite /":

<base href="https://stackoverflow.com/subsite/" />

e todos os meus valores src são relativos assim:

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

Qualquer outra ref de script carrega bem, MESMO os dados _content, mas não o blazor.server.js.

Tentei o velho truque do PathBase para aplicativos MVC também sem sucesso:

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

Alguém pode me dizer como fazer o Blazor perceber onde colocar o blazor.server.js em um cenário de proxy reverso?

Dynde
fonte
11
blazor.server.js é um recurso incorporado. você pode tentar obter uma cópia do arquivo e servi-lo estaticamente como qualquer outro arquivo js. Mas, mesmo assim, há muita conversa entre o servidor e o navegador. Não tenho certeza de como vai funcionar na sua configuração.
ravi
Hmm. Eu realmente não entendo isso, porque os componentes também são recursos incorporados, vivendo em _content, mas os acha muito bem. Vou tentar agarrar-lo e servi-lo estaticamente, mas este parece ser um bug real - Quero dizer, como você pode se esqueça de apoiar subsites proxy reverso em 2019
Dynde
Você tem algum log disponível para ver qual (e se) caminho de solicitação termina no ASP.NET?
Henk Holterman

Respostas:

-1

Dos documentos .

Reescrever URLs para roteamento correto

As solicitações de roteamento para componentes de página em um aplicativo Blazor WebAssembly não são tão diretas quanto as solicitações de roteamento em um aplicativo hospedado no Blazor Server. Considere um aplicativo Blazor WebAssembly com dois componentes:

  • Main.razor - Carrega na raiz do aplicativo e contém um link para o Aboutcomponente ( href="About").
  • About.razor - Aboutcomponent.

Quando o documento padrão do aplicativo é solicitado usando a barra de endereços do navegador (por exemplo https://www.contoso.com/):

  • O navegador faz uma solicitação.
  • A página padrão é retornada, que geralmente é index.html .
  • index.html inicia o aplicativo.
  • O roteador do Blazor é carregado e o Maincomponente Razor é renderizado.

Na página principal, selecionando o link para as Cerca de obras de componentes no cliente porque o roteador Blazor pára o navegador de fazer um pedido na Internet para www.contoso.coma Aboute serve ao prestados Aboutcomponente em si. Todas as solicitações de pontos de extremidade internos no aplicativo Blazor WebAssembly funcionam da mesma maneira: as solicitações não acionam solicitações baseadas no navegador para recursos hospedados no servidor na Internet. O roteador lida com as solicitações internamente.

Se uma solicitação for feita usando a barra de endereços do navegador www.contoso.com/About, a solicitação falhará. Esse recurso não existe no host da Internet do aplicativo; portanto, uma resposta 404 - Não encontrada é retornada.

Como os navegadores fazem solicitações aos hosts da Internet para páginas do lado do cliente, os servidores da Web e os serviços de hospedagem devem reescrever todas as solicitações de recursos que não estão fisicamente no servidor na página index.html . Quando index.html é retornado, o roteador Blazor do aplicativo assume o controle e responde com o recurso correto.

Ao implantar em um servidor IIS, você pode usar o Módulo de reconfiguração de URL com o arquivo web.config publicado do aplicativo . Para mais informações, consulte a seção IIS .


Talvez você possa tentar ativar o proxy de encaminhamento no gerenciador do IIS-> nó do servidor-> cache de roteamento de solicitação de aplicativo-> proxy-> ativar.

Se você tiver apenas um site, basta adicioná-lo ao farm de servidores ARR e, em seguida, ele criará a regra de roteamento automaticamente. Será conveniente monitorar o servidor back-end com verificação de integridade.

Esse aviso de ARR está causando meu 404?

Hamza Rashid
fonte
Bem, tanto quanto eu posso ver - esse artigo gira em torno do Blazor WebAssembly, e eu estou usando o lado do servidor. Além disso, meu IIS já está usando o recurso de proxy de encaminhamento do ARR (pois é assim que estou fazendo o proxy reverso na minha instalação).
Dynde