Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé 127.0.0.1:3446
Je suis en utilisant le WCF4.0 modèleRESTE. Je suis en train de faire une méthode qui télécharge un fichier à l'aide d'un ruisseau.
Le problème se produisent toujours à
Stream serverStream = request.GetRequestStream();
Classe pour le streaming:
namespace LogicClass
{
public class StreamClass : IStreamClass
{
public bool UploadFile(string filename, Stream fileStream)
{
try
{
FileStream fileToupload = new FileStream(filename, FileMode.Create);
byte[] bytearray = new byte[10000];
int bytesRead, totalBytesRead = 0;
do
{
bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
totalBytesRead += bytesRead;
} while (bytesRead > 0);
fileToupload.Write(bytearray, 0, bytearray.Length);
fileToupload.Close();
fileToupload.Dispose();
}
catch (Exception ex) { throw new Exception(ex.Message); }
return true;
}
}
}
RESTE du projet:
[WebInvoke(UriTemplate = "AddStream/{filename}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
public bool AddStream(string filename, System.IO.Stream fileStream)
{
LogicClass.FileComponent rest = new LogicClass.FileComponent();
return rest.AddStream(filename, fileStream);
}
Windows Forme de projet: pour les tests
private void button24_Click(object sender, EventArgs e)
{
byte[] fileStream;
using (FileStream fs = new FileStream("E:\\stream.txt", FileMode.Open, FileAccess.Read, FileShare.Read))
{
fileStream = new byte[fs.Length];
fs.Read(fileStream, 0, (int)fs.Length);
fs.Close();
fs.Dispose();
}
string baseAddress = "http://localhost:3446/File/AddStream/stream.txt";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseAddress);
request.Method = "POST";
request.ContentType = "text/plain";
Stream serverStream = request.GetRequestStream();
serverStream.Write(fileStream, 0, fileStream.Length);
serverStream.Close();
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
int statusCode = (int)response.StatusCode;
StreamReader reader = new StreamReader(response.GetResponseStream());
}
}
J'ai désactivé le pare-feu et de ma connexion Internet, mais l'erreur est toujours présente. Est-il un meilleur moyen de tester la méthode de téléchargement?
Trace de la pile:
au Système.Net.Les Sockets.Socket.DoConnect(point de Terminaison endPointSnapshot, SocketAddress socketAddress)
au Système.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& adresse, ConnectSocketState état, IAsyncResult asyncResult, Int32 délai d'attente, Exception& exception)
- Vous ne devriez pas avoir à vous soucier de pare-feu ou de connexion internet pour les connexions locales. Dans votre code, vous vous connectez à un port
8000
mais dans votre message d'erreur du port est3446
. Est-ce pertinent? - c'était une faute de frappe d'erreur. Merci pour le mentionner. Veuillez voir mon edit.
Vous devez vous connecter pour publier un commentaire.
"Activement refusée" signifie que l'hôte qui a envoyé un reset au lieu d'un accusé de réception lorsque vous avez essayé de vous connecter. Il n'est donc pas un problème dans votre code. Soit il y a un pare-feu bloque la connexion ou le processus qui héberge le service n'est pas à l'écoute sur ce port. Ce peut être parce qu'il ne fonctionne pas du tout ou parce qu'il est à l'écoute sur un port différent.
Une fois que vous commencez le processus de l'hébergement de votre service, essayez de
netstat -anb
(requiert des privilèges d'administrateur) pour vérifier qu'il est en cours d'exécution et à l'écoute sur le port.mise à jour: Sur Linux, vous pouvez avoir besoin de faire
netstat -anp
à la place.netstat -anb
, je ne trouve pas le port dans la liste. Connaissez vous des étapes possibles pour résoudre ce problème? J'ai désactivé le pare-feu désactiver l'anti-virus et de désactiver la connexion internet, mais encore d'erreur existent.Vous n'avez pas à redémarrer le PC. Redémarrez IIS.
netstat -anb
et aussi j'ai redémarré le serveur. Toujours la même erreur, toute aide?iis
résolu ce problème pour moi. non de l'autre des solutions travaillé celui-ci est sous-estimé!J'ai eu un message d'erreur similaire comme TCP code d'erreur 10061: Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé dans mon projet en cours. Je trouve ce 10061 code d'erreur ne peut pas distinguer le cas où le point de terminaison de service n'est pas démarré, et le cas qu'il est bloqué par le pare-feu. Souvent, le pare-feu peut être éteint, mais le problème est toujours là.
Vous pouvez tester votre code en dessous de deux façons.
Ci-dessus est mon fix. Il fonctionne sur ma machine. J'espère que cela aide!
Vous devez configurer votre système de proxy
Vous devez passer par ce chemin
panneau de configuration>>options internet>>connexion>>paramètres LAN>>
proxy
pas de tik:utiliser de serveur proxy
Vérifier si un autre programme est en utilisant ce port.
Si une instance du même programme est toujours actif, tuer le processus.
J'ai eu un problème similaire. Dans mon cas, le service va fonctionner très bien sur l'ordinateur du développeur, mais ne parviennent pas quand sur l'assurance qualité de la machine. Il s'est avéré que sur l'assurance de la qualité de la machine l'application n'est pas en cours d'exécution en tant qu'administrateur et n'a pas l'autorisation d'enregistrer le point de terminaison:
Reportez-vous ici pour savoir comment le faire fonctionner sans être un utilisateur admin: https://stackoverflow.com/a/885765/38258
Si vous utiliser WCF tempête, vous pouvez même vous connecter à la WCF point de terminaison de service? Si non, et vous héberge dans un service Windows, vous avez probablement oublié d'inscrire cet espace de noms. Ce n'est pas très bien annoncé que cette étape est nécessaire, et il est en fait ennuyeux à faire.
- Je utiliser cet outil pour ce faire; il automatise toutes les personnes lourdes étapes.
J'ai eu un problème similaire
rejetant localhost et 127.0.0.1.
cmd(admin)
netstat -anb
trouvé le port en cours d'exécution sur 169.254.80.80 (ne sais pas étaient ip, qui venait parce que mon adresse ip a été 10.0.0.5.après avoir mis dans cette IP, il a travaillé.
Cela Donne IP correcte:
Vérifier si le numéro de port dans le fichier Web.config de votre page web est le même que celui qui est hébergé sur IIS.
Avec cette erreur, j'ai été capable de les tracer, grâce à @Yaur, vous avez besoin pour vérifier le service (WCF) si elle est en cours d'exécution et aussi vérifier les sortants et entrants propriétés TCP sur votre avance paramètres de pare-feu.
J'ai eu le même problème sur mon serveur web "Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé 161.x.x.235:5672". J'ai demandé à l'Admin pour ouvrir le port 5672 sur le serveur web, puis il a bien fonctionné.
Avec un motif similaire, mon repos client est l'appel de l'API de service, le service appelé avec succès lors du débogage, mais pas de travail sur l'a publié code. Erreur: Impossible de se connecter au serveur distant.
Intérieure De L'Exception: System.Net.Les Sockets.Exception socketexception (0x80004005): Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé serviceIP:443 au Système.Net.Les Sockets.Socket.DoConnect(point de Terminaison endPointSnapshot, SocketAddress socketAddress) au Système.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& adresse, ConnectSocketState état, IAsyncResult asyncResult, Exception& exception)
Résolution: permet de Régler le proxy dans la configuration Web.
J'ai aussi été confrontés à un problème dans .Net Remoting Service en C#.
Je l'ai résolu en 3 étapes:
J'ai eu un problème similaire. Dans mon cas, VPN proxy d'application tels que Psiphon ، changé le proxy de configuration dans windows afin de suivre cette :
Assurez-vous que tous les services utilisés par votre application sont, qui sont à l'aide d'hôte et le port à utiliser . Pour l'e.g, comme dans mon cas, Cette erreur peut venir, Si votre application utilise un serveur Redis et il n'est pas capable de se connecter sur le port de l'hôte, ce qui produit cette erreur .