1
resposta

Publicar uma Aplicação ASPNET CORE 2.2 com EF 2.2 no IIS banco de dados SQL Server

Estou tendo algumas dificuldades para implantar um aplicativos no IIS 1 - Tenho que sempre inserir manualmente as variaveis de ambiente no web.config

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile="\\?\%home%\LogFiles\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables> 
</aspNetCore>

E essa aplicação acessa banco de dados gerado pelo migrations com identity consigo implantar o aplicativo em um Servidor Windows Server 2016 que esta em uma maquina virtual, Pelo Manager Studio é possivel verificar que o banco foi criado no servidor mas quando tempo efetuar um registro recebo esse erro:

SqlException: Falha de logon do usuário 'CARLOS\SRVCARLOSDC1$'. System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, object providerInfo, string newPassword, SecureString newSecurePassword, bool redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, bool applyTransientFaultHandling, string accessToken) System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, uint waitForMultipleObjectsTimeout, bool allowCreate, bool onlyOneCheckConnection, DbConnectionOptions userOptions, out DbConnectionInternal connection) System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(bool errorsExpected, CancellationToken cancellationToken) Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, bool errorsExpected) Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable+AsyncEnumerator.BufferlessMoveNext(DbContext , bool buffer, CancellationToken cancellationToken) Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync<TState, TResult>(TState state, Func<DbContext, TState, CancellationToken, Task> operation, Func<DbContext, TState, CancellationToken, Task<ExecutionResult>> verifySucceeded, CancellationToken cancellationToken) Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable+AsyncEnumerator.MoveNext(CancellationToken cancellationToken) System.Linq.AsyncEnumerable.FirstOrDefault(IAsyncEnumerable source, CancellationToken cancellationToken) in First.cs Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider+TaskResultAsyncEnumerable+Enumerator.MoveNext(CancellationToken cancellationToken) System.Linq.AsyncEnumerable+SelectEnumerableAsyncIterator<TSource, TResult>.MoveNextCore(CancellationToken cancellationToken) in Select.cs System.Linq.AsyncEnumerable+AsyncIterator.MoveNext(CancellationToken cancellationToken) in AsyncIterator.cs Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider+ExceptionInterceptor+EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken) Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteSingletonAsyncQuery(QueryContext queryContext, Func<QueryContext, IAsyncEnumerable> compiledQuery, IDiagnosticsLogger logger, Type contextType) Microsoft.AspNetCore.Identity.UserManager.FindByNameAsync(string userName) Microsoft.AspNetCore.Identity.UserValidator.ValidateUserName(UserManager manager, TUser user, ICollection errors) Microsoft.AspNetCore.Identity.UserValidator.ValidateAsync(UserManager manager, TUser user) Microsoft.AspNetCore.Identity.UserManager.ValidateUserAsync(TUser user) Microsoft.AspNetCore.Identity.UserManager.CreateAsync(TUser user) Microsoft.AspNetCore.Identity.UserManager.CreateAsync(TUser user, string password) ..... Poderiam me ajudar com esse problema ?

1 resposta

Olá, A. Carlos, tudo bem?

Peço desculpas pela demora no retorno a sua mensagem.

Existem algumas possíveis causas para esse problema. Uma solução para o cenário que você apresentou é certificar de que seguiu os seguintes passos:

  1. Verifique se as informações de autenticação do banco de dados estão corretas no seu aplicativo. Certifique-se de que o nome do servidor, nome do banco de dados, usuário e senha estejam configurados corretamente no arquivo de configuração do seu aplicativo.

  2. Verifique se o usuário tem permissões adequadas no banco de dados. Certifique-se de que o usuário tenha permissão para fazer logon no banco de dados e executar as operações necessárias para o registro.

  3. Verifique se o servidor do banco de dados está acessível a partir da máquina virtual em que o aplicativo está sendo implantado. Certifique-se de que não há problemas de conectividade de rede ou firewall que estejam impedindo o acesso ao banco de dados.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida. Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo as documentações abaixo para consulta:

Espero ter ajudado.

Abraços e bons estudos!