早上好,我通常会避免在论坛上提问,因为我总能找到很多能满足我情况的答案 . 我正在使用NFe 4.00的授权Ws与Sefaz集成,但是当我将验证我的XML时,错误'Type' http://www.portalfisc.in.info/nfe:TNFe'未被声明“返回 . 我在Asp.Net Core中创建了我的项目(Web Api )这是我用来验证的代码:

XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.ValidationType = ValidationType.Schema;
xmlReaderSettings.Schemas = new XmlSchemaSet();
xmlReaderSettings.XmlResolver = new XmlUrlResolver() { Credentials = CredentialCache.DefaultCredentials };
xmlReaderSettings.Schemas.Add(null, localSchema);
xmlReaderSettings.ValidationEventHandler += new ValidationEventHandler(delegate (object sender, ValidationEventArgs e)
{
    var ex = new Exception(string.Format("Falha ao validar Xml! Linha: {0}, Coluna: {1}, Mensagem: {2}",
    e.Exception.LineNumber, e.Exception.LinePosition, e.Exception.Message));
    ex.Data.Add("statusCode", HttpStatusCode.BadRequest);
    throw ex;
});

using (var stringReader = new StringReader(xml.InnerXml))
{
    var xmlReader = XmlReader.Create(stringReader, xmlReaderSettings);
    while (xmlReader.Read()) { }                    
    xmlReader.Close();

记住:

  • 该代码适用于Core以外的项目;

  • 错误发生在以下行:"var xmlReader = XmlReader.Create(stringReader, xmlReaderSettings);"

  • 所有NFe 4.00架构都是最新的;

  • 我知道错误不在XML中,因为它在旧项目的版本中正常工作;

  • 我已经尝试过其他人提出的一些提示,但无论如何都要提出并失败了 .

  • 我使用的模式可以通过以下链接下载:“http://www.nfe.fazenda.gov.br/PORTAL/exibirArquivo.aspx?conteudo=CoNA9VIgZ3E=”;

对于翻译不好的问题我感到抱歉,感谢您的帮助 .