2010-04-28 3 views
0

J'écris ma première application Web C# qui se connecte à un service XML. Cela nécessite que je présente un certificat et alimente le flux XML. Il semble authentifier correctement, mais il donne l'erreur suivante:L'hôte connecté n'a pas pu répondre (adresse NAT interne)

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.1.10.4:3128

Le plus drôle est que je ne suis pas sur un proxy ou quelque chose comme ça. Je me connecte directement à Internet. À un moment donné, nous avons utilisé un proxy avec une adresse NAT interne. Donc, ma question est la suivante: Est-ce que Visual Studio a une sorte de paramètre proxy par défaut que j'ai besoin de changer? Cette adresse IP n'est plus utilisée pour rien, donc je sais que je n'ai pas besoin d'utiliser de code d'authentification proxy.

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Net; 
using System.Security.Cryptography.X509Certificates; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

namespace WebApplication1 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Uri requestURI = new Uri("*site omitted*"); 

      //Create the Request Object 
      HttpWebRequest pageRequest = (HttpWebRequest)WebRequest.Create(requestURI); 

      //After installing the cert on the server export a client cert to the working directory as Deluxe.cer 
      string certFile = "*certificate omitted*"; 
      X509Certificate cert = X509Certificate.CreateFromCertFile(certFile); 

      //Pull in your Data, if it is from an external xml as below or create an xml string with variables if a dynamic post is required. 
      string xmlPath = "*XML omitted*"; 
      System.Xml.XmlDocument passXML = new System.Xml.XmlDocument(); 
      passXML.Load(xmlPath); 

      //XML String with the data needed to pass 
      string postData = passXML.OuterXml; 

      //Set the Request Object parameters 
      pageRequest.ContentType = "application/x-www-form-urlencoded"; 
      pageRequest.Method = "POST"; 
      pageRequest.AllowWriteStreamBuffering = false; 
      pageRequest.AllowAutoRedirect = false; 
      pageRequest.ClientCertificates.Add(cert); 
      postData = "xml_data=" + Server.UrlEncode(postData); 
      pageRequest.ContentLength = postData.Length; 

      //Create the Post Stream Object 
      System.IO.StreamWriter postStream = new System.IO.StreamWriter(pageRequest.GetRequestStream()); 

      //Write the data to the post stream 
      postStream.Write(postData); 
      postStream.Flush(); 
      postStream.Close(); 

      //Set the Response Object 
      HttpWebResponse postResponse = (HttpWebResponse)pageRequest.GetResponse(); 
+0

De nombreuses classes utilisent les paramètres de proxy Internet Explorer. Comment communiquez-vous avec le webservice (pouvez-vous nous montrer le code)? Pouvez-vous vérifier si les paramètres de proxy Internet Explorer sont définis sur cette adresse IP? – dtb

+0

J'ai ajouté quelques exemples de code, j'espère que cela aidera. L'erreur se produit à la ligne "... System.IO.StreamWriter postStream = new System.IO.StreamWriter (pageRequest ..." Je ne connais pas beaucoup de C#, donc toute aide serait appréciée ... – MostRandom

Répondre

0

La seule façon que vous allez savoir ce qui se passe est de regarder le trafic réseau avec Fiddler ou peut-être Microsoft Network Monitor.

Questions connexes