none
IIS - Acessos API RRS feed

  • Pergunta

  • Ola, pessoal

    possuimos um Portal com algumas API's para acesso.

    Ocorre que apos algum tempo (ou alguns acessos) a API para de responder. A aplicação continua funcionando normalmente, apenas a API que não.

    Reciclando o pool do IIS, volta a funcionar.

    Podem me dar uma pista, que caminho daria para seguir para tentar descobrir?


    Julio C.

    quarta-feira, 8 de novembro de 2017 16:25

Todas as Respostas

  • Julio,

    Já verificou no EventViewer os logs do servidor?


    Carlos Eduardo Ferreira

    quarta-feira, 8 de novembro de 2017 17:58
  • Sim, fazendo testes aqui (forçando este erro com um programa que fica tentando login indefinidamente) não tem nada significativo aparecendo.. tem alguma coisa que vai alem do que pensei inicialmente..

    -

    Neste API é feito o login no sistema.  está sendo identificado que, por alguma razão, em algum acesso começa a dar erro de "usuario não encontrado", na verdade está retornando Null no EF (com o SQL Server). e deste momento em diante, não funciona mais. Aparentemente poderia ser algo no SQL Server, mas tambem não tem nada nos logs.

    Estranhamente, reciclando o pool , volta a funcionar.


    Julio C.

    quarta-feira, 8 de novembro de 2017 18:42
  • Monitorando o processo do IIS que sua API utiliza...

    Consome muita memória ou processamento?


    Carlos Eduardo Ferreira

    quarta-feira, 8 de novembro de 2017 19:08
  • Não está nada exagerado. Tudo aparentemente normal..

    Estamos continuando a investigar.


    Julio C.

    quarta-feira, 8 de novembro de 2017 20:20
  • Poderia ativar o AsNoTracking do EF?

    Para forçar ele refezar a consulta SQL.


    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    segunda-feira, 13 de novembro de 2017 12:55
  • O problema está ainda sob investigação, mas tem a ver com a função de criptografia da senha. em certos momentos ela gera um codigo diferente do que deveria, porém, reiniciando o IIS volta a funcionar (descriptografar corretamente).

    Julio C.

    terça-feira, 14 de novembro de 2017 19:35
  • Você utiliza data/hora para comparar algo? hash?


    Rafael Almeida
    Senior Developer .NET C#
    Development Leader at JAMSOFT Informática
    Criador e Mantenedor do Entity Framework Core for Firebird
    Contribuidor do Entity Framework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    terça-feira, 14 de novembro de 2017 19:43
  • Ola. não, data/hora , nem hash.

    vou colocar a função e a chamada 

    Este codigo da que encripta e decripta agora está numa api, antes quando estava no proprio projeto não acontecia isso.


                    Usuario usuario = new Usuario();
                    usuario.Login = CriptografiaHelper.EncryptText(Login);
                    usuario.Senha = CriptografiaHelper.EncryptText(Senha);



            static CriptografiaHelper()
            {
                //Chave para cryptografia
                _cryptoProvider = new TripleDESCryptoServiceProvider();
                _cryptoProvider.Key = new byte[] { meus bytes };
                _cryptoProvider.IV = new byte[] { meus bytes };
            }



    public static string EncryptText(string Text)
            {

                if (Text == string.Empty)
                {
                    return Text;
                }
                else
                {
                    byte[] encryptedData = null;
                    MemoryStream dataStream = null;

                    ICryptoTransform encryptor = default(ICryptoTransform);
                    encryptor = _cryptoProvider.CreateEncryptor();

                    try
                    {
                        dataStream = new MemoryStream();

                        CryptoStream encryptedStream = null;
                        try
                        {
                            //Create the encrypted stream 
                            encryptedStream = new CryptoStream(dataStream, encryptor, CryptoStreamMode.Write);

                            StreamWriter wr = null;
                            try
                            {
                                //Write the string to memory via the encryption algorithm 
                                wr = new StreamWriter(encryptedStream, Encoding.Default);
                                //Write the string to the memory stream 
                                wr.Write(Text);

                                //End the writing 
                                wr.Flush();
                                encryptedStream.FlushFinalBlock();

                                //Position back at start 
                                dataStream.Position = 0;

                                //Create area for data 
                                encryptedData = new byte[Convert.ToInt32(dataStream.Length) + 1];

                                //Read data from memory 
                                dataStream.Read(encryptedData, 0, Convert.ToInt32(dataStream.Length));

                                //Convert to String 
                                return Convert.ToBase64String(encryptedData, 0, encryptedData.Length);
                            }
                            finally
                            {
                                wr.Close();
                            }
                        }
                        finally
                        {
                            encryptedStream.Close();
                        }
                    }
                    finally
                    {
                        dataStream.Close();
                    }
                }
            }


    Julio C.


    • Editado Julio Costi quinta-feira, 16 de novembro de 2017 16:14
    quinta-feira, 16 de novembro de 2017 16:12
  • Ola, alguem tem alguma dica sobre essa questão da criptografia?

    a senha é criptografada conforme uma sequencia de bytes, e depois descriptografada , com a mesma chave.


    Julio C.

    sexta-feira, 24 de novembro de 2017 18:03