Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/09/2014, 08:12
Avatar de lucasmoadr
lucasmoadr
 
Fecha de Ingreso: marzo-2007
Ubicación: Llavallol, Buenos Aires
Mensajes: 220
Antigüedad: 17 años, 1 mes
Puntos: 5
Problema en servicio Multipart

Hola,

cree un servicio en asp.net que envia por post un archivo multipart a la pagina de Arba Argentina por HTTPS. el problema que tengo es que me da el siguiente error:

500 "No se puede escribir datos de en la conexión de transporte: Se ha forzado la interrupción de una conexión existente por el host remoto".

Lo raro es que cuando abro el programa FIDDLER para ver los paquetes que estoy mandando, el servicio me funciona correctamente. Alguien sabe si este programa abre algun puerto especial, o si debo poner algo en mi codigo para poder enviar el multipart.

Cita:
System.Net.Security.RemoteCertificateValidationCal lback(ValidateServerCertificate);
string url = System.Configuration.ConfigurationManager.AppSetti ngs.Get("urlArba").ToString();
HttpWebRequest requestToServerEndpoint =
(HttpWebRequest)WebRequest.Create(url);
requestToServerEndpoint.ProtocolVersion=HttpVersio n.Version10;

requestToServerEndpoint.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
requestToServerEndpoint.UserAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
requestToServerEndpoint.Headers.Add("Accept-Encoding: gzip,deflate,sdch");
requestToServerEndpoint.Headers.Add("Accept-Language: es-ES,es;q=0.8");
requestToServerEndpoint.KeepAlive = false;
string boundaryString = "WebKitFormBoundarytgRINaBf0BThkhe0";
requestToServerEndpoint.Method = WebRequestMethods.Http.Post;
requestToServerEndpoint.ContentType = "multipart/form-data; boundary=" + boundaryString;
requestToServerEndpoint.Credentials = System.Net.CredentialCache.DefaultCredentials;

MemoryStream postDataStream = new MemoryStream();
StreamWriter postDataWriter = new StreamWriter(postDataStream);

postDataWriter.Write("--" + boundaryString + "\r\n");
postDataWriter.Write("Content-Disposition: form-data; name=\"user\"\r\n\r\n{0}",
user);

postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
postDataWriter.Write("Content-Disposition: form-data; name=\"password\"\r\n\r\n{0}",
password);

// Include the file in the post data
postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
postDataWriter.Write("Content-Disposition: form-data; "
+ "name=\"{0}\"; "
+ "filename=\"{1}\""
+ "\r\nContent-Type: {2}\r\n\r\n{3}",
"file",
nombreArchivo,
"text/plain",
"texto archivo");

postDataWriter.Flush();
postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
postDataWriter.Write("Content-Disposition: form-data; name=\"submit\"\r\n\r\n{0}",
"Ingresar");

postDataWriter.Write("\r\n--" + boundaryString + "--\r\n");
postDataWriter.Flush();

requestToServerEndpoint.ContentLength = postDataStream.Length;

requestToServerEndpoint.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cac he.RequestCacheLevel.Default);
using (Stream s = requestToServerEndpoint.GetRequestStream())
{
postDataStream.WriteTo(s);
}
postDataStream.Close();
WebResponse response = requestToServerEndpoint.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream());

return responseReader.ReadToEnd();
__________________
Alquileres en la costa
Se tu mismo