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 est 3446. Est-ce pertinent?
  • c'était une faute de frappe d'erreur. Merci pour le mentionner. Veuillez voir mon edit.
InformationsquelleAutor fiberOptics | 2012-03-14