OpenAC.Net.NFSe.Web 1.8.1

Prefix Reserved
dotnet add package OpenAC.Net.NFSe.Web --version 1.8.1
                    
NuGet\Install-Package OpenAC.Net.NFSe.Web -Version 1.8.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OpenAC.Net.NFSe.Web" Version="1.8.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenAC.Net.NFSe.Web" Version="1.8.1" />
                    
Directory.Packages.props
<PackageReference Include="OpenAC.Net.NFSe.Web" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OpenAC.Net.NFSe.Web --version 1.8.1
                    
#r "nuget: OpenAC.Net.NFSe.Web, 1.8.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OpenAC.Net.NFSe.Web@1.8.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OpenAC.Net.NFSe.Web&version=1.8.1
                    
Install as a Cake Addin
#tool nuget:?package=OpenAC.Net.NFSe.Web&version=1.8.1
                    
Install as a Cake Tool

OpenAC.Net.NFSe.Web

Integração ASP.NET Core para os provedores municipais de NFS-e, no padrão de serviços do NFSe.Nacional. Suporta .NET 8, 9 e 10.

using Microsoft.Extensions.DependencyInjection;
using OpenAC.Net.NFSe;

services.AddOpenNFSeWeb(config =>
{
    config.WebServices.CodigoMunicipio = 3529005;
    config.PrestadorPadrao.CpfCnpj = "CNPJ_DO_PRESTADOR";
    config.PrestadorPadrao.InscricaoMunicipal = "INSCRICAO";
    config.Certificados.CertificadoBytes = bytesPfx;
    config.Certificados.Senha = senhaPfx;
    config.Arquivos.PathSchemas = caminhoSchemas;
}, options =>
{
    options.TimeoutOperacao = TimeSpan.FromSeconds(100);
    options.TimeoutTentativa = TimeSpan.FromSeconds(30);
    options.TimeoutsPorOperacao[nameof(IOpenNFSeClient.EnviarAsync)] = TimeSpan.FromMinutes(2);
    options.PersistenciaHabilitada = false;
});

IOpenNFSeClient é registrado por escopo. Sua configuração e coleção NotasServico são independentes. Configure o certificado por bytes PFX/P12 ou caminho de arquivo existente; a biblioteca Web rejeita seleção interativa, certificado sem chave privada, fora da validade ou próximo do vencimento.

app.MapGet("/nfse/{numero:int}", async (
    int numero, IOpenNFSeClient client, CancellationToken cancellationToken) =>
    await client.ConsultaNFSeAsync(numero, cancellationToken: cancellationToken));

Multiempresa

Implemente INFSeConfigurationProvider<ConfigNFSe> e INFSeCertificateProvider e registre:

services.AddOpenNFSeWebMultiTenant<EmpresaConfigurationProvider, EmpresaCertificateProvider>();

using var client = await factory.CreateAsync(empresaId, cancellationToken);
var result = await client.ConsultaNFSeAsync(numero, cancellationToken: cancellationToken);

factory implementa IOpenNFSeClientFactory. Cada chamada deve receber uma configuração nova, exclusiva para aquele cliente. Os providers são singletons e precisam ser seguros para concorrência. Resolva empresaId a partir do contexto autenticado da aplicação consumidora.

Os handlers HTTP são separados por empresa, certificado, endpoint, TLS, proxy e regras de comunicação. Credenciais e cabeçalhos de autenticação são aplicados por requisição. Cookies não são compartilhados. O IHttpClientFactory gerencia a renovação de handlers e conexões.

Comunicação e limites

As operações municipais existentes continuam disponíveis na API síncrona de OpenNFSe. Os métodos Async executam esses provedores em uma thread de trabalho e propagam o cancelamento até o HTTP; eles ainda ocupam uma thread durante a comunicação síncrona do provedor. Operações assíncronas são serializadas por cliente. Use clientes independentes para concorrência e não altere sua configuração ou suas notas durante uma operação.

Timeouts de operação, de tentativa e do provedor são limites cumulativos: prevalece o primeiro a expirar. O timeout próprio do provedor é configurado por AjustaAguardaConsultaRet e AguardarConsultaRet, em segundos.

Tentativas seguem WebServices.Tentativas e IntervaloTentativas. Repetição automática é permitida somente para métodos HTTP seguros. POSTs, inclusive consultas SOAP, emissão, cancelamento e substituição, não são repetidos automaticamente. Respostas fiscais continuam em RetornoWebservice; falhas de transporte são expostas como NFSeTechnicalException. Cancelamento mantém OperationCanceledException.

Logs, ActivitySource e métricas usam o nome OpenAC.Net.NFSe.Web. Métricas: openac.nfse.operations e openac.nfse.operation.duration. Os logs próprios não incluem XMLs, senhas ou cabeçalhos de autenticação. Configure separadamente o logging HTTP do host se os endpoints de um provedor incluírem dados sensíveis em URLs.

Documentos

A persistência Web é desabilitada por padrão, mesmo quando as flags legadas de salvamento estão habilitadas. Para ativar, configure PersistenciaHabilitada, CaminhoDocumentos e as flags correspondentes de Geral, WebServices e Arquivos.

FileSystemNFSeDocumentStore usa a raiz do host, separa diretórios por hash da empresa, categoria e mês e evita sobrescritas por colisão de nome. Pode ser substituído por uma implementação de INFSeDocumentStore, por exemplo para armazenamento de objetos. O transporte também pode ser substituído por INFSeHttpTransport; registre suas implementações antes de AddOpenNFSeWeb.

O catálogo de municípios continua sendo compartilhado pelo processo. Carregue e configure o catálogo na inicialização do host; não o modifique durante requisições concorrentes.

Veja também o exemplo ASP.NET Core e o DANFSe Web.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on OpenAC.Net.NFSe.Web:

Package Downloads
OpenAC.Net.NFSe.DANFSe.PDFSharp.Web

Integração ASP.NET Core para geração de DANFSe municipal em PDF com PDFSharp.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.8.1 132 10/28/2026