Cita:
Empezado por robinsondemantu
Pon el código que utilizas para hacer la llamada y lo vemos. ¿Te funcionaba antes?
|
/*
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = store.Certificates.Find(X509FindType.FindBySubjectName, "tecnologica", false);
foreach (var item in certCollection)
{
Debug.Print("Item: " + item.SubjectName.Name);
}
X509Certificate2 cert = certCollection[0];
*/
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(connectionString_HACIENDA);
request.ContentType = "text/xml";
request.Method = "POST";
request.Credentials = CredentialCache.DefaultCredentials;
if (CERTIFICADO != null)
{
request.ClientCertificates.Add(CERTIFICADO);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(root.ToString());
request.ContentLength = bytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = webResponse.GetResponseStream())
{
using (StreamReader responseStreamReader = new StreamReader(responseStream, true))
{
response = responseStreamReader.ReadToEnd();
responseStreamReader.Close();
}
responseStream.Close();
}
webResponse.Close();
}
Debug.Print("Respuesta: " + response);
}
Antes si me funcionaba. Antes cogía el certificado a "pelo" que es el código que está comentado al principio.
Después lo cambié por algo más visual para que el usuario escogiese el certificado, pero el funcionamiento es idéntico.