Às vezes, recebo o seguinte erro enquanto fazia HttpWebRequest em um WebService. Também copiei meu código abaixo.
System.Net.WebException: Não foi possível conectar-se ao servidor remoto ---> System.Net.Sockets.SocketException: Nenhuma conexão pôde ser estabelecida porque a máquina de destino a recusou ativamente. 127.0.0.1:80 em System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) em System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP) em System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Soquete s4, Soquete s6, Soquete e soquete, Endereço IP e endereço, Estado ConnectSocketState, IAsyncResult asyncResult, Int32 timeout, Exceção e exceção) --- Fim do rastreamento da pilha de exceção interna --- em System.Net.HttpWebRequest.GetRequestStream ()
ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.PreAuthenticate = true;
request.Credentials = networkCredential(sla);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = v_Timeout * 1000;
if (url.IndexOf("asmx") > 0 && parStartIndex > 0)
{
AppHelper.Logger.Append("#############" + sla.ServiceName);
using (StreamWriter reqWriter = new StreamWriter(request.GetRequestStream()))
{
while (true)
{
int index01 = parList.Length;
int index02 = parList.IndexOf("=");
if (parList.IndexOf("&") > 0)
index01 = parList.IndexOf("&");
string parName = parList.Substring(0, index02);
string parValue = parList.Substring(index02 + 1, index01 - index02 - 1);
reqWriter.Write("{0}={1}", HttpUtility.UrlEncode(parName), HttpUtility.UrlEncode(parValue));
if (index01 == parList.Length)
break;
reqWriter.Write("&");
parList = parList.Substring(index01 + 1);
}
}
}
else
{
request.ContentLength = 0;
}
response = (HttpWebResponse)request.GetResponse();
Respostas:
Se isso acontecer sempre, significa literalmente que a máquina existe, mas que não possui serviços atendendo na porta especificada ou existe um firewall para você.
Se isso acontecer ocasionalmente - você usou a palavra "às vezes" - e tentar novamente com êxito, é provável que o servidor tenha um 'backlog' completo.
Quando você está esperando para estar
accept
editado em um soquete de escuta, você é colocado em uma lista de pendências. Esse backlog é finito e bastante curto - valores de 1, 2 ou 3 não são incomuns - portanto, o sistema operacional pode não conseguir enfileirar sua solicitação para o 'accept' consumir.O backlog é um parâmetro da
listen
função - todos os idiomas e plataformas têm basicamente a mesma API nesse sentido, mesmo o C # . Esse parâmetro geralmente é configurável se você controlar o servidor e provavelmente é lido em algum arquivo de configurações ou no registro. Investigue como configurar seu servidor.Se você criou o servidor, pode ter um processamento pesado na aceitação do seu soquete, e isso pode ser melhor movido para um thread de trabalho separado, para que a sua aceitação esteja sempre pronta para receber conexões. Existem várias opções de arquitetura que você pode explorar que atenuam a fila de clientes e os processam sequencialmente.
Independentemente de você poder aumentar a lista de pendências do servidor, é necessário tentar novamente a lógica no código do cliente para lidar com esse problema - mesmo com uma lista pendente longa, o servidor pode estar recebendo muitas outras solicitações nessa porta naquele momento.
Há uma possibilidade rara de um roteador NAT dar esse erro caso suas portas para mapeamentos sejam esgotadas. Acho que podemos descartar essa possibilidade como um tiro no escuro, já que o roteador tem 64K conexões simultâneas com o mesmo endereço / porta de destino antes da exaustão.
fonte
O motivo mais provável é um firewall.
Este artigo contém um conjunto de razões, que podem ser úteis para você.
A partir do artigo, os possíveis motivos podem ser:
fonte
Isso aconteceu comigo também. Às vezes, quando abro meu projeto, aparece um erro frustrante. O problema era que, às vezes, o número da porta do serviço da web mudava inesperadamente.
Esse problema geralmente ocorre quando você possui mais de uma cópia do projeto.
Meu projeto estava chamando o serviço da Web com um número de porta específico que eu atribuí no arquivo Web.Config do meu arquivo de projeto principal. Como o número da porta mudou inesperadamente, o navegador não conseguiu encontrar o serviço da Web e lançou esse erro.
Resolvi isso seguindo as etapas abaixo: (Visual Studio 2010)
Espero que isso resolva o problema.
Felicidades :)
fonte
LocalHost:2532
para mim. Acontece que foi definido dessa maneira pelo proprietário anterior na área que você especificou. Agora que esse mistério está claro, torna outras coisas menos misteriosas. Obrigado!Eu acho que você precisa verificar suas configurações de proxy em "opções da internet". Se você estiver usando aplicativos proxy / 'ocultar ip', esse problema pode ocorrer.
fonte
Eu tive o mesmo problema. O problema é que não iniciei o servidor selênio. Fiz o download do servidor selenium e o iniciei. Depois de iniciar o servidor selenium, o problema desapareceu e tudo funcionou bem.
Consulte: http://coding-issues.blogspot.in/2012/11/no-connection-could-be-made-because.html
fonte
Vá para o seu projeto WCF - propriedades -> -> depuradores -> desmarque a caixa de seleção
fonte
Eu tive o mesmo erro no meu serviço WCF usando a ligação Net TCP, mas resolvi depois de iniciar os serviços abaixo no meu caso.
Net.Pipe.Listener.Adapter
Net.TCP.Listener.Adapter
Serviço de compartilhamento de porta Net.Tcp
fonte
Isso é realmente específico, mas se você receber esse erro depois de tentar se conectar a um banco de dados usando o mongo, o que funcionou para mim foi executar o mongod.exe antes de executar o mongo.exe e a conexão funcionou bem. Espero que isso ajude alguém.
fonte
Eu enfrentei o mesmo erro porque, quando o servidor e o cliente são executados na mesma máquina, o cliente precisa do endereço IP local do servidor e não do endereço IP público para se comunicar com o servidor, você precisa do endereço IP público apenas no caso em que o servidor e o cliente executam em uma máquina separada, use o endereço IP local no programa cliente para conectar-se ao servidor O endereço IP local pode ser encontrado usando este método.
fonte
Eu recebi esse erro em um aplicativo que usa o AppFabric. A pista estava recebendo um
DataCacheException
rastreio na pilha. Para verificar se esse é o problema, execute o seguinte comando do PowerShell:Se um desses dois serviços for interrompido, você receberá esse erro.
fonte
Bem, eu recebi esse erro hoje no Windows 8 de 64 bits, pela primeira vez, e meu my.ini foi redefinido e o arquivo bin / mysqld foi excluído, entre outros itens no
"Program Files/MySQL/MySQL Server 5.6"
pastaPara corrigi-lo, tive que executar o instalador do MySQL novamente, instalando apenas o servidor e copiar uma versão recente do arquivo my.ini
"ProgramData/MySQL/MySQL Server 5.6"
, com o nomemy_2014-03-28T15-51-20.ini
no meu caso (não sei como ou por que isso foi copiado recentemente) de volta para"Program Files/MySQL/MySQL Server 5.6"
.A única alteração no sistema desde que o MySQL funcionou foi a instalação do Traktor 2 da Native Instruments e de uma placa de som do Traktor Audio 2, que realmente não deveria ter causado esse problema, e ninguém mais usou o sistema além de mim. Se alguém tiver uma pista, seria gentil de sua parte comentar para evitar isso para mim e para qualquer outra pessoa que tenha encontrado isso.
fonte
Para referência de serviço em uma solução.
Reinicie sua estação de trabalho
Reconstrua sua solução
Nesse ponto, recebi uma mensagem (Windows 7) para permitir o acesso ao sistema. Em seguida, a referência de serviço foi atualizada corretamente sem erros.
fonte
Gostaria de compartilhar esta resposta que encontrei porque a causa do problema não foi o firewall ou o processo não estava escutando corretamente, foi o exemplo de código fornecido pela Microsoft que eu usei.
https://msdn.microsoft.com/en-us/library/system.net.sockets.socket%28v=vs.110%29.aspx
Eu implementei essa função quase exatamente como foi escrita, mas o que aconteceu foi que eu recebi este erro:
2016-01-05 12: 00: 48,075 [10] ERRO - O erro é: System.Net.Sockets.SocketException (0x80004005): Nenhuma conexão pôde ser estabelecida porque a máquina de destino a recusou ativamente [fe80 :: caa: 745: a1da: e6f1% 11]: 4080
Este código diria que o soquete está conectado, mas não sob o endereço IP correto realmente necessário para a comunicação adequada. (Fornecido pela Microsoft)
Reescrevi o código para usar apenas o primeiro IP válido encontrado. Estou preocupado apenas com o IPV4 usando isso, mas ele funciona com o host local, 127.0.0.1, e o endereço IP da sua placa de rede, onde o exemplo fornecido pela Microsoft falhou!
fonte
No meu caso, alguns domínios funcionaram, enquanto outros não. A adição de uma referência ao URL do proxy da minha organização em meu web.config corrigiu o problema.
fonte
Eu recebi esse erro dos serviços de referência localizados em um WCFHost da minha camada da web. O que funcionou para mim pode não se aplicar a todos, mas estou deixando essa resposta para quem puder. O número da porta do meu WCFHost foi atualizado aleatoriamente pelo IIS; eu simplesmente tive que atualizar as rotas finais para as referências svc na minha configuração da web. Problema resolvido.
fonte
No meu cenário, tenho dois aplicativos:
fonte
Mais uma possibilidade -
Verifique se você está tentando abrir o mesmo endereço IP do local onde está ouvindo. Meu aplicativo de servidor estava ouvindo o endereço IP da máquina host usando IPv6, mas o cliente estava tentando se conectar ao endereço IPv4 da máquina host.
fonte
No meu caso, isso foi causado por uma implantação defeituosa, na qual uma configuração no meu web.config não foi feita.
Um colega explicou que o endereço IP na mensagem de erro representa o host local.
Quando corrigi o web.config, estava usando o URL correto para fazer as chamadas do servidor e funcionou.
Eu pensei em publicar isso, caso isso possa ajudar alguém.
fonte
Usando o WampServer 64bit no Windows 7 Home Premium 64bit, encontrei esse problema exato. Depois de horas e horas de experimentação, ficou claro que tudo o que era necessário estava no my.ini para comentar uma linha. Então funcionou bem.
comentou 1 socket de linha = mysql
Se você colocar seus / data / arquivos antigos no local apropriado, o WampServer aceitará todos eles, exceto a pasta / mysql / que ele escreve. Então, simplesmente importei um backup dos dados do / mysql / user do meu ambiente de desenvolvimento anterior e executei o FLUSH PRIVILEGES em uma janela SQL do phpMyAdmin. Funciona bem. Algo deve estar errado, porque as coisas não devem ser tão fáceis.
fonte
Eu tive esse problema acontecendo com frequência. Achei que o
SQL Server Agent
serviço não estava em execução. Depois que iniciei o serviço manualmente, ele foi corrigido. Verifique se o serviço está sendo executado ou não:services.msc
e pressione EnterSQL Server Agent
( Nome da Instância )Se
SQL Server Agent
não estiver em execução, clique duas vezes no serviço para abrir a janela de propriedades. Depois clique noStart
botão Espero que ajude alguém.fonte
Me deparei com esse erro e demorei um pouco para resolvê-lo. No meu caso, eu tinha https e net.tcp configurados como ligações do IIS na mesma porta. Obviamente, você não pode ter duas coisas na mesma porta. Usei o comando netstat -ap tcp para verificar se há algo escutando nessa porta. Não havia ninguém ouvindo. A remoção de ligações desnecessárias (https no meu caso) resolveu meu problema.
fonte
Foi um problema bobo do meu lado, eu adicionei um proxy padrão ao meu web.config para interceptar o tráfego no Fiddler e esqueci de removê-lo!
fonte
Existe um serviço chamado "Navegador do SQL Server" que fornece informações de conexão do SQL Server aos clientes.
No meu caso, nenhuma das soluções existentes funcionou porque este serviço não estava sendo executado. Eu retomei e tudo voltou a funcionar perfeitamente.
fonte
Eu estava enfrentando esse problema hoje. O meu era o Asp.Net Core API e o usa
Postgresql
como banco de dados. Configuramos esse banco de dados como um contêiner do Docker. Portanto, o primeiro passo que fiz foi verificar se sou capaz de acessar o banco de dados ou não. Para fazer isso, procureiPgAdmin
no início, pois configurei o mesmo. Ao clicar no aplicativo resultante, você será redirecionado para o http://127.0.0.1:23722/browser/ . Lá você pode tentar acessar seu banco de dados no menu esquerdo. Para mim, estava recebendo um erro, como na imagem abaixo.Digite a senha e tente se você pode acessá-la ou não. Para mim, não estava funcionando. Como é um contêiner do Docker, decidi reiniciar a área de trabalho do Docker. Para isso, clique com o botão direito do mouse no ícone do Docker na barra de tarefas e clique em reiniciar.
Depois de reiniciar o Docker, consegui efetuar login e ver o banco de dados e também ocorreu o erro ao reiniciar o aplicativo no Visual Studio .
Espero que ajude.
fonte
pode ser devido a problemas de autorização; esse foi o meu caso. Se você tem, por exemplo:
[Authorize("WriteAccess")]
ou[Authorize("ReadAccess")]
na parte superior das funções do seu controlador, tente comentá-las.fonte
Para mim, eu queria iniciar o mongo no shell (irrelevante o contexto exato da pergunta, mas com a mesma mensagem de erro antes de iniciar o mongo no shell)
O processo 'MongoDB Service' não estava sendo executado nos Serviços
Inicie o cmd como administrador e digite,
Apenas para ver o MongoDB em funcionamento, digite mongo, no cmd ele fornecerá detalhes da versão do Mongo e o URL de conexão do Mongo
fonte
Eu acabei de enfrentar isso agora ...
Aqui, do meu lado, eu tenho duas soluções separadas do Visual Studio (.sln) ... abri cada uma em sua própria instância do Visual Studio.
A solução 2 chama o código da solução 1. O problema estava relacionado à porta atribuída à Solução 1. Tive que alterar a porta na solução 1 para outra e, em seguida, a Solução 2 começou a funcionar novamente. Portanto, verifique a porta atribuída ao seu projeto.
fonte