none
É possível rodar tarefas agendadas no IIS? RRS feed

Respostas

Todas as Respostas

  • No entendi sua questao.... IIS é um serivodr WEB. Teoricamente é possivel criar uma pagina que execute um codigo agendado, mas nao é a ferramente para isso.

    Por que nao usar o proprio agendador de tarefas?

    Nos de mais detalhes do que voce quer fazer.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 22 de julho de 2016 18:46
    Moderador
  • Em minha aplicação eu preciso que de tantos em tantos minutos ele execute uma determinada rotina, segue exemplo do que estava testando no Global.asax:

    var tarefaAgendada = new System.Timers.Timer();
    tarefaAgendada.Elapsed += new ElapsedEventHandler(OnTimedEvent);
                tarefaAgendada.Interval = 60*1000;
                tarefaAgendada.Enabled = true;
    
    
    private void OnTimedEvent(object sender, ElapsedEventArgs e)
            {
                var navegador = new ProcessStartInfo("www.google.com.br");
                Process.Start(navegador);
            }

    Se eu deixar o visual studio aberto, depois que executar a primeira vez a aplicação é feita a  chama ao procedimento certinho.

    Mas se eu publicar o sistema no IIS não é feita a chamada do método.

    Desde já obrigado.

    sexta-feira, 22 de julho de 2016 18:59
  • o que seu codigo vai tentar fazer é abrir um browser no lado do servidor... Funciona quando vc esta no VS porque servidor e cliente sao a mesma maquina.

    Por que voce tem que abrir o google de tempos em tempos? Precisamos de mais detalhes para poder te dar uma resposta correta.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 22 de julho de 2016 19:08
    Moderador
  • Não preciso abrir o google, neste caso foi só um exemplo. O que preciso é que a cada 30 minutos eu faça uma consulta no banco de dados e verifique o status de determinadas transações. 

    Caso eu troque o código onde é feita a chamada para abrir o google e coloque a chamada para minha função que atualiza as transações, irá funcionar corretamente? 

    sexta-feira, 22 de julho de 2016 19:14
  • >Caso eu troque o código onde é feita a chamada para abrir o google e coloque a chamada para minha função que atualiza as transações, irá funcionar corretamente? 

    Nao... 

    Para isso voce vai precisar criar um serviço que seja executado em algum sevidor (nao necessariamente o mesmo do IIS)

    aqui esta um tutorila de como fazer isso:

    http://www.devmedia.com.br/criando-um-servico-utilizando-c/22912

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 22 de julho de 2016 19:25
    Moderador
  • Coloquei o seguinte código dentro do Application_Start e publiquei o sistema no IIS e está funcionando perfeitamente.

    var tarefaAgendada = new System.Timers.Timer();
                tarefaAgendada.Elapsed += new ElapsedEventHandler(OnTimedEvent);
                tarefaAgendada.Interval = 60 * 1000;
                tarefaAgendada.Enabled = true;
    
    
    cadTransacoes.Inserir(new Transacoes
                {
                    Code = "F218064C-83D6-429B-9008-FD887DD056F6",
                    Notification =  "",
                    Numero_Int = 12345,
                    Matricula = 4,
                    Descricao = "Produto Teste",
                    Qtde = 1,
                    Valor = 25,
                    Status = 1,
                    dtInsercao = DateTime.Now
                });

    Segue abaixo as inserções realizadas:

    sexta-feira, 22 de julho de 2016 19:58
  • Só um pequeno detalhe... isso vai funcionar enquanto tiver alguem usando a pagina... 

    Depois de um tempo de inatividade a aplicaçao se fecha e o timer nao é mais disparado... 

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 22 de julho de 2016 20:09
    Moderador
  • Não entendi muito bem sua explicação, porem se você quiser executar uma determinada URL, tem como você fazer isso, pelo SQL server ou pelo agendador de tarefas, ou seja eles executam a rotina que esta nessa URL, se for isso que você quiser acredito que resolva seu problema.
    segunda-feira, 25 de julho de 2016 12:07