Usuário com melhor resposta
Consumindo Web Service consulta cadastro Nfe!

Pergunta
-
Senhores,
Estou desenvolvendo uma aplicação que consome o Webservices Consulta cadastro da Nfe.
Na chamada do objeto ja instanciado, me retorna o seguinte erro: A solicitação HTTP está proibida com o esquema de autenticação de cliente 'Anonymous'.
Mas ja estou passando o certificado na chamada do Methodo. em Debug consigo ver o certificado e todas as suas propriedades, data de validade e numero de serie.
alguem sabe oque pode estar ocorrendo?
uso o segundo overload do do methodo SetCertificate, pois o primeiro me retorna o erro abaixo:Cad.ClientCredentials.ClientCertificate.SetCertificate(
"EMPRESA", StoreLocation.CurrentUser, StoreName.My);
Não é possível encontrar o certificado X.509 usando os seguintes critérios de pesquisa: StoreName 'My', StoreLocation 'CurrentUser', FindType 'FindBySubjectDistinguishedName', FindValue 'EMPRESA'.
Uso o Framework 3.5
string CadCabMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><versaoDados>1.01</versaoDados></cabecMsg>";
string CadMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><infCons><xServ>CONS-CAD</xServ><UF>SP</UF><IE>645252690113</IE><CNPJ>48539407008879</CNPJ></infCons></ConsCad>";
ConsultaCadastro.
CadConsultaCadastroSoapClient Cad = new CadConsulta.ConsultaCadastro.CadConsultaCadastroSoapClient();
Cad.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "EMPRESA");
string retorno = Cad.consultaCadastro(CadCabMsg, CadMsg); //Erro nessa chamada
A solicitação HTTP está proibida com o esquema de autenticação de cliente 'Anonymous'.
Respostas
-
Klayton,
Seu Certificado tem que ser valido. para esse serviço o certificado da ASSOCIAÇÃO, não serve.
uso o .net 2.0 veja se te ajuda como faço para selecionar o certificado;
public X509Certificate2 oCertificado; public bool lLocalizouCertificado; public DateTime dValidadeInicial; public DateTime dValidadeFinal; public string sSubject; public X509Certificate2 SelecionarCertificado() { X509Certificate2 vRetorna; X509Certificate2 oX509Cert = new X509Certificate2(); X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false); X509Certificate2Collection collection2 = (X509Certificate2Collection)collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false); X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o certificado digital para uso no aplicativo", X509SelectionFlag.SingleSelection); if (scollection.Count == 0) { string msgResultado = "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas."; MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning); //vRetorna = false; vRetorna = null; } else { oX509Cert = scollection[0];
- Editado Maicon Cesar Vaz sexta-feira, 16 de abril de 2010 14:19 complemento.
- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 6 de maio de 2010 23:30
- Marcado como Resposta AndreAlvesLimaModerator domingo, 13 de junho de 2010 19:56
Todas as Respostas
-
Klayton,
Alguma novidade quanto a essa sua dúvida?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
Klayton,
Seu Certificado tem que ser valido. para esse serviço o certificado da ASSOCIAÇÃO, não serve.
uso o .net 2.0 veja se te ajuda como faço para selecionar o certificado;
public X509Certificate2 oCertificado; public bool lLocalizouCertificado; public DateTime dValidadeInicial; public DateTime dValidadeFinal; public string sSubject; public X509Certificate2 SelecionarCertificado() { X509Certificate2 vRetorna; X509Certificate2 oX509Cert = new X509Certificate2(); X509Store store = new X509Store("MY", StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates; X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false); X509Certificate2Collection collection2 = (X509Certificate2Collection)collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false); X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o certificado digital para uso no aplicativo", X509SelectionFlag.SingleSelection); if (scollection.Count == 0) { string msgResultado = "Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas."; MessageBox.Show(msgResultado, "Advertência", MessageBoxButtons.OK, MessageBoxIcon.Warning); //vRetorna = false; vRetorna = null; } else { oX509Cert = scollection[0];
- Editado Maicon Cesar Vaz sexta-feira, 16 de abril de 2010 14:19 complemento.
- Sugerido como Resposta AndreAlvesLimaModerator quinta-feira, 6 de maio de 2010 23:30
- Marcado como Resposta AndreAlvesLimaModerator domingo, 13 de junho de 2010 19:56
-
-