Azure-docs: Contêiner do Linux do Serviço de Aplicativo do Azure - Erro 503 de handshake da Web

Criado em 1 mar. 2020  ·  46Comentários  ·  Fonte: MicrosoftDocs/azure-docs

Meio Ambiente

  • Contêiner de Linux do Azure App Service, configurações padrão, WebSockets habilitados
  • Projeto padrão do Blazor do lado do servidor AspNet Core 3.1

Problema

Ao usar Web Sockets (por exemplo, Blazor), a conexão de soquete falha no lado do cliente com o seguinte erro:

Error during WebSocket handshake: Unexpected response code: 503

O problema é de alguma forma bem conhecido:
https://github.com/MicrosoftDocs/azure-docs/issues/19578
https://github.com/MicrosoftDocs/azure-docs/issues/31771
https://github.com/dotnet/aspnetcore/issues/10370

Infelizmente, todos os problemas são encerrados sem qualquer solução.

De acordo com os problemas listados acima, a origem do problema pode ser a configuração perMessageDefalate no WebSocket (que aparentemente não pode ser configurada usando o Blazor Server Side). Essa limitação com WebSockets usando o App Service Linux Contains também está documentada aqui:
https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-faq#language -support

Outras pessoas relatam que o problema está relacionado às configurações de CORS e autenticação:
https://stackoverflow.com/a/58240309

Seria muito interessante saber se este é um bug que será corrigido ou se funciona conforme o planejado.


Detalhes do Documento

Não edite esta seção.

Pri3 app-servicsvc cxp escalated-product-team product-bug triaged

Comentários muito úteis

@ AjayKumar-MSFT: Estou tendo esse problema usando o plano de serviço de aplicativo S1, não o plano de serviço de aplicativo gratuito.

Então, parece que os Web Sockets não são atualmente suportados para Linux? Você pode esclarecer aqui? Obrigado pela ajuda!

Todos 46 comentários

@jlorek Obrigado por sua consulta e feedback, nossa equipe analisará o problema e rápido possível.

Estamos enfrentando o mesmo problema.

Alguma atualização sobre este? Tendo o mesmo problema

Desculpe pelo atraso! Eu entendo perfeitamente que é uma experiência frustrante com esse problema. Estou verificando isso com nossa equipe de engenharia de produto e postarei de volta com uma atualização em breve.

Apenas como uma observação lateral, eu vi problemas semelhantes (WebSocket | erro 503) corrigidos, aumentando a escala para um Plano de Serviço de Aplicativo superior.

@jlorek Se você puder compartilhar o nome do seu aplicativo onde está vendo o 503, posso ajudar a descobrir isso. Tecnicamente, os soquetes da Web são compatíveis com o App Service Linux e o problema das extensões de WebSocket também não deve ocorrer mais.

Existe algo mais complexo para tentar reproduzir este problema após a implantação do aplicativo de projeto Blazor padrão? Eu apenas tentei implantar uma amostra e carrega para mim bem. (https://blazerlinux.tuxedoase.p.azurewebsites.net/weatherforecast) Mas admito que não sou um especialista em aplicativos, então posso estar faltando alguma coisa.

Obrigado @JennyLawrance por sua ajuda e comentários.
@LANSoftwareentwicklung , @ameyakarve , como Jenny solicitou, você poderia compartilhar um dos nomes do WebApp diretamente aqui ou indiretamente ?

O aplicativo Blazor padrão funciona para nós, se houver etapas adicionais / complexas que você está configurando e quiser compartilhar o repo e as etapas exatas de repro, envie um e-mail para AzCommunity [arroba] Microsoft [ponto] com referência a este tópico, o O nome do WebApp e a ID de assinatura do Azure, faremos o acompanhamento com você.

Obrigado pela sua paciência e cooperação!

@JennyLawrance - O endpoint da API /weatherforecast é parte do projeto padrão do cliente Blazor. Não está incluído no Server Side Default Project, uma vez que não é necessário devido à Server Side Application Architecture. Você se importaria de tentar reproduzir com o modelo de projeto do lado do servidor dotnet new blazorserver ?

@ AjayKumar-MSFT - Claro, basta acessar https://peakseason.azurewebsites.net
Conforme mencionado no início, é o modelo de projeto padrão do lado do servidor Blazor implantado em um contêiner de Linux do serviço de aplicativo do Azure (com WebSocket habilitado) em um plano de serviço de aplicativo F1.

Também criei outro exemplo sem contêineres, usando o serviço de aplicativo com aplicativo da Web no Linux em uma pilha Net Core 3.1:
https://peakseason-code.azurewebsites.net

Experimentei o Plano de Serviço F1 e B1. Ambos resultam no mesmo problema - Erro 503 de handshake da Web.

@ AjayKumar-MSFT - Enviei a você um e-mail com o nome do aplicativo e o ID da assinatura.

@jlorek , obrigado por compartilhar os detalhes solicitados.
@LANSoftwareentwicklung , Ack. Recebemos seu email.

Estamos investigando e entraremos em contato com você em breve.

@jlorek , você pode esclarecer qual URL está vendo o 503? Consigo acessar o aplicativo.

Eu estava tendo esse mesmo problema em um serviço de aplicativo de vários contêineres. Quando encontrei esse erro, estava usando um plano de serviço de aplicativo com o nível F1 (gratuito). Depois de ler algumas das recomendações, tentei mudar para uma camada b1. Depois de reimplantar o aplicativo de vários contêineres na camada b1, o soquete da web está se conectando com êxito sem o erro de handshake.

@JennyLawrance - Sim, você pode acessar o aplicativo. Mas a conexão WebSocket subjacente não pode ser estabelecida, devido a um erro 503. Para ver esse erro, basta abrir o DevTools do seu navegador. Usando o Blazor, há um modo de fallback implementado, quando nenhuma conexão WebSocket pode ser estabelecida. Ao não usar o Blazor e confiar em WebSockets, todo o seu aplicativo pode ser danificado devido a este erro.

@ Classificados-dev - Tentei o B1 sem sucesso. Mas usando o plano de serviço P1V2, a conexão WebSocket funciona perfeitamente para o meu projeto.

@jlorek , @ Classificados-dev, Sim, identifiquei um problema de código em nossa extremidade que bloqueia completamente os soquetes da web em SKU grátis. Abri um item de trabalho do nosso lado para consertar isso.

Quando esse problema for identificado e uma correção for implantada. Além disso, a documentação será atualizada para refletir as mudanças. Agora prosseguiremos para fechar este tópico. Se houver mais perguntas sobre este assunto, marque-nos em sua resposta. Teremos o prazer de continuar a discussão.

Obrigado a todos por chamar nossa atenção para isso. Nós realmente apreciamos seus valiosos comentários.

Estou vendo um 503 com um serviço de aplicativo de nível gratuito F1 de contêiner único.

Olá

Todas essas soluções não funcionaram para mim. Deixe-me explicar o que tenho:

Estou desenvolvendo uma solução com Twilio + Azure Cognitive Services (conversa por telefone, tempo real e usando websockets)

Do Twilio, quando uma chamada chega, eu envio uma solicitação POST inicial (Webhook) para meu WebApp para contêineres como este:
_ https://my_azure_web_app.azurewebsites.net/twiml_

Dentroservidor, tenho um ponto de extremidade como este:

_class TwiML (tornado.web.RequestHandler):
def post (self):
response_str = './greetings.mp3 '
response_str + = ' '
response_str + = '
'
self.finish (str (response_str))
def set_default_headers (self):
imprimir ("configurando cabeçalhos !!!")
self.set_header ("Access-Control-Allow-Origin", "*")
self.set_header ("Access-Control-Allow-Headers", "x-required-with")
self.set_header ("Sec-WebSocket-Extensions", "permessage-deflate") _

Posso iniciar meu aplicativo no localhost e em um contêiner no localhost (ou seja, posso abrir websockets de / para Twilio sem problemas e obter o canal de websocket aberto)

Quando implanto a imagem no WebApp para contêineres e esse contêiner está em execução, posso receber a primeira parte da mensagem de áudio (ou seja, saudações). Mas, depois disso, não consigo abrir a conexão wss websocket (_wss: //my_azure_web_app.azurewebsites.net.azurewebsites.net/socket_) e sempre recebo um erro do Twilio como este:
Stream - WebSocket - Conexão interrompida

(Eu usei "EXPOSE 8080" em meu Dockerfile e "WEBSITES_PORT = 8080" em meu WebApp de definições de configuração)

O contêiner está em execução:
2020-04-08 14: 13: 06.366 INFO - O registro não está habilitado para este contêiner.
Use https://aka.ms/linux-diagnostics para habilitar o registro para ver os registros do contêiner aqui.
2020-04-08 14: 13: 06.882 INFO - Iniciando solicitação de aquecimento para o contêiner my_azure_web_app_8_91af842a para o site my_azure_web_app
2020-04-08 14: 13: 10.919 INFO - O contêiner my_azure_web_app_8_91af842a para o site my_azure_web_app foi inicializado com êxito e está pronto para atender às solicitações.

Posso acessar seu url:
https://my_azure_web_app.azurewebsites.net/

Posso me conectar ao meu canal websocket com Advanced Rest Client (Google)
"Conectado a wss: //my_azure_web_app.azurewebsites.net/socket "

Acho que está tudo bem, MAS quando tento abrir o " wss: //my_azure_web_app.azurewebsites.net/socket " do

Tentei de tudo sem sucesso (ambos, servidor tornado e Azure). Então:

  1. Aplicativo da web para contêineres
    1.1. CORS: vazio (e também: Origens permitidas "*"). Ambos, sem sucesso.
    1.2. WebSockets habilitado ("On")
    1.3. Plano de serviço de aumento de escala (P1V2)
  2. Servidor Tornado:
    2.1. Defina os cabeçalhos "Access-Control-Allow-Origin", "*"
    2.2. Defina o cabeçalho "Sec-WebSocket-Extensions", "permessage-deflate" (ainda é necessário?)

Por fim, não tenho meu aplicativo em execução implantado no Web App for Containers
Eu esgoto minhas idéias.

Alguém pode dizer novas maneiras de tentar?

Muito obrigado antecipadamente!

@lopejum , para uma análise mais detalhada, respondi ao seu outro tópico do GitHub. Obrigado pelo comentário.

Por que este problema foi encerrado? A partir de hoje, ele ainda não está funcionando para o nível gratuito. Existe uma referência para que possamos observá-la e sermos notificados quando a correção for implantada no Azure?

Ainda tenho esse problema para Blazor 3.1 e Linux App Service (B1). Podemos reabrir ou publicar alguma recomendação clara sobre este?

Como já foi dito no primeiro post, este problema parece bem conhecido, mas todos os problemas são resolvidos sem fornecer nenhuma solução. Parece um pouco estranho. @ AjayKumar-MSFT alguma informação sobre o progresso da correção?

Com base nos comentários, atualizamos este documento com o seguinte - "Os soquetes da Web não são atualmente suportados para aplicativos Linux em planos de serviço de aplicativos gratuitos. Estamos trabalhando para remover esta limitação e planejamos oferecer suporte a até 5 conexões de soquetes da web no serviço de aplicativos gratuitos planos. "

@JennyLawrance , solicitando sua ajuda e comentários sobre isso.

@ AjayKumar-MSFT: Estou tendo esse problema usando o plano de serviço de aplicativo S1, não o plano de serviço de aplicativo gratuito.

Então, parece que os Web Sockets não são atualmente suportados para Linux? Você pode esclarecer aqui? Obrigado pela ajuda!

@JennyLawrance , @ AjayKumar-MSFT: lembrete amigável ...

Acabei de verificar que uma configuração semelhante com WebSockets funciona em um aplicativo do Windows, mas não em um Linux. Isso independe de qual tipo de preço é escolhido.

Provavelmente há vários problemas combinados aqui:
Identificou-se o Websockets que não funciona de graça e teremos uma solução para isso.

@thomaux , você pode me fornecer o URL do aplicativo que você configurou (envie um e-mail para jennylaw (at) microsoft (ponto) com e podemos investigar.

@ AjayKumar-MSFT

Com base nos comentários, atualizamos este documento com o seguinte - "Os soquetes da Web não são atualmente suportados para aplicativos Linux em planos de serviço de aplicativos gratuitos. Estamos trabalhando para remover esta limitação e planejamos oferecer suporte a até 5 conexões de soquetes da web no serviço de aplicativos gratuitos planos. "

@JennyLawrance , solicitando sua ajuda e comentários sobre isso.

Por favor, o que significam os Planos de Serviço de Aplicativo Gratuito? Tenho uma assinatura de estudante com 100 dólares de crédito grátis e estou executando web sockets no plano B1. Isso também é contado como plano gratuito? O URL do Websocket está respondendo com 503.

WebSocket connection to 'ws://wsstestivo.azurewebsites.net/?encoding=text' failed: Error during WebSocket handshake: Unexpected response code: 503

Executando esta imagem: https://hub.docker.com/r/ksdn117/web-socket-test

Hoje, de repente, meu serviço de aplicativo Linux começou a funcionar corretamente com a conexão de soquete da web.
Este é o Plano de Serviço de Aplicativo S1, aplicativo do lado do Blazor Server.

Então o que está acontecendo? Você pode, por favor, lançar alguma luz? Não realizamos nenhuma implantação ou alteração de configurações recentemente.

@JennyLawrance Alguma atualização sobre isso? Eu te enviei um e-mail com o URL do aplicativo

Começamos a receber esse problema aleatoriamente na última sexta-feira. Todos os nossos planos de serviço de aplicativo são Linux.

Nossos clientes não conseguiram estabelecer uma conexão de websocket com um de nossos serviços em um Plano de Serviço de Aplicativo B3. Este serviço foi implementado por vários meses e nunca tivemos problemas de conectividade de websocket (ou quaisquer problemas de conectividade) com ele.

Tentei reiniciar o serviço do aplicativo várias vezes, mas não funcionou. Finalmente, depois de ver este tópico, movi o serviço de aplicativo de seu plano de serviço de aplicativo B3 original para um plano de serviço de aplicativo B1 diferente que estávamos usando. Isso corrigiu o problema para nós.

Em seguida, tentamos mover o serviço de aplicativo de volta para o plano de serviço de aplicativo B3 original, mas o problema ocorreu novamente.

Isso é muito confuso para nós e enviamos um tíquete de suporte para o Azure.

Não acho que tenhamos feito alterações no plano de serviço de aplicativo B3 ou no serviço de aplicativo afetado por um tempo.

Mesmo erro

failed: Error during WebSocket handshake: Unexpected response code: 503

Plano de serviço do aplicativo: LinuxContainerAppServicePlan (P1v2: 1)

Mesmo problema no Linux B1

Mesmo problema usando Linux B1, mas funciona quando alternado para Windows.

Mudar de Linux B1 → Linux B2 e depois voltar ajudou

Pedimos desculpas a todos pela resposta tardia e frustração com este problema. Discutimos sobre isso internamente.
Se você ainda tiver esse problema, envie um e-mail com o assunto ' Attn: Ajay ' para AzCommunity [arroba] Microsoft [ponto] com referência a este tópico, nome do WebApp e ID de assinatura do Azure, para uma investigação mais profunda, nós fará o acompanhamento disso.

Obrigado pela sua paciência e cooperação!

Mudar do plano F1 grátis para o B2 funcionou. No entanto, ao voltar para F1, o erro volta. Não tenho certeza se websockets não são suportados para o plano F1.

Meu erro: Erro durante o handshake do WebSocket: Código de resposta inesperado: 503

Mudar do plano F1 grátis para o B2 funcionou. No entanto, ao voltar para F1, o erro volta. Não tenho certeza se websockets não são suportados para o plano F1.

Meu erro: Erro durante o handshake do WebSocket: Código de resposta inesperado: 503

@Sijoma , obrigado pela atualização. Sim, conforme mencionado neste documento - “Os Web Sockets não são atualmente suportados para aplicativos Linux em planos de serviço de aplicativos gratuitos. Estamos trabalhando para remover essa limitação e planejamos oferecer suporte a até 5 conexões de soquete da web em planos de serviço de aplicativo gratuito. ” - Nossa equipe de produto está trabalhando nisso, mas não temos um ETA para compartilhar no momento.

Também não funcionam com planos pagos (B1).

Também não funcionam com planos pagos (B1).

Usuários com um problema semelhante corrigiram trocando o plano -B1 -> B2 -> B1, por favor, veja se isso funciona para você. Tendo mencionado isso, estou discutindo sobre isso internamente e postarei de volta com mais atualizações.

Isso funciona na instância do Windows Free? Ou os websockets estão fora do escopo das instâncias gratuitas?

Isso funciona na instância do Windows Free? Ou os websockets estão fora do escopo das instâncias gratuitas?

Permitimos 5 conexões de websocket em SKU GRÁTIS no Windows.

Eu só quero adicionar minha experiência aqui. Eu tive problemas semelhantes com sockets da web que não funcionavam em aplicativos da web do Linux.
Para mim, funcionou para atualizar para o B2. Websockets não funcionou em F1 e B1.

Tive que atualizar para o Linux B2 para que funcionasse.

Mesmo aqui, sem sorte com F1 ou B1, quando atualizado para B2, começou a funcionar imediatamente.

Para mim, o Linux B2 também funcionou. B1 e F1 não.

No meu aplicativo da web de vários contêineres, o websocket funciona, mas o erro ainda é gerado. Usando nginx, nodejs

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

spottedmahn picture spottedmahn  ·  3Comentários

Favna picture Favna  ·  3Comentários

bityob picture bityob  ·  3Comentários

jharbieh picture jharbieh  ·  3Comentários

jebeld17 picture jebeld17  ·  3Comentários