Senhores, bom dia.
@Renato Rubinho obrigado por tentar ajudar.
Enfim consegui resolver o problema da consulta.
Deixo abaixo a solução adotada para se possível ajudar outros que estão passando pelas mesmas dificuldades.
Dicas para criação do lote de RPS:
Problema 1 - O objeto que você envia não é o que você serializa:
- Quando utiliza em C# as funções importadas pelo WSDL, o método para enviar recebe um objeto do tipo "RecepcionarLoteRpsEnviarLoteRpsEnvio" mas para a criação do arquivo XML devemos utilizar o objeto dp tipo "RecepcionarLoteRps". Dentro dele existe o atributo EnviarLoteRpsEnvio do tipo RecepcionarLoteRpsEnviarLoteRpsEnvio então, crie um objeto do tipo RecepcionarLoteRps, de new no objteto EnviarLoteRpsEnvio, serialize seu objeto do tipo RecepcionarLoteRps, assine este objeto, (Não precisa assinar os RPS, somente o Lote), e ao enviar para a prefeitura envie o EnviarLoteRpsEnvio.
Problema 2 - Ao deserializar o objeto, a assinatura não é carregada:
- Adicione no Reference.cs da classe gerada na importação do WSDL, acima do atributo Signature, o namespace: [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://www.w3.org/2000/09/xmldsig#")]
Problema 3 - A consulta do lote enviado não funciona com o objeto do tipo ConsultarLoteRps:
-Seguindo a mesma ideia de enviar o Lote, tentei criar o objeto para fazer a consulta porém, sempre recebia o erro "Arquivo enviado com erro na assinatura. / Acerte a assinatura do arquivo.", para corrigir o erro, criei no Reference.cs uma classe com o nome "ConsultarLoteRpsEnvio", esta classe foi criada contendo os mesmo atributos da classe "ConsultarLoteRpsConsultarLoteRpsEnvio". Em seguida eu alterei os metodos "ConsultarLoteRps", "ConsultarLoteRpsAsync(ConsultarLoteRpsEnvio ConsultarLoteRpsEnvio)" e sua sobrecarga "ConsultarLoteRpsAsync(ConsultarLoteRpsEnvio ConsultarLoteRpsEnvio, object userState)". Desta forma a consulta funcionou.
Não esqueça de adicionar o namespace sobre o Signature:
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public SignatureType Signature
Não sei se existe outra solução mas percebi que não dá para utilizar o WSDL sem alterações e ter que alterar uma classe gerada pelo WSDL foi novidade para mim.
Obrigado pelo espaço aqui no Fórum.
Eduardo Feu