none
Erro ao final da execução de um serviço

    Question

  • Boa tarde a todos, possuo um serviço simples responsável por executar certos comandos no prompt de comando, para teste estou criando uma pasta no servidor.
    A pasta é criada corretamente porém estou recebendo o seguinte erro:

    [
    Erro no processamento de XML: nenhum elemento encontrado
    Posição: http://localhost:49377/servico.ashx?Dir=TEST123
    Número da linha 1, coluna 1:
    ]

    Segue o código do serviço:

    <%@ WebHandler Language="C#" Class="servico" %>
    
    using System;
    using System.Web;
    using System.IO;
    using System.Web.Hosting;
    using System.Diagnostics;
    
    public class servico: IHttpHandler {
    
    
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                //
                System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");
                pInfo.RedirectStandardError = true;
                pInfo.RedirectStandardInput = true;
                pInfo.UseShellExecute = false;
                pInfo.RedirectStandardOutput = true;
    
                pInfo.WorkingDirectory = @"C:\";
                //
                System.Diagnostics.Process psCmdPmpt = System.Diagnostics.Process.Start(pInfo);
                StreamWriter swProcess = psCmdPmpt.StandardInput;
                StreamReader srProcess = psCmdPmpt.StandardOutput;
                swProcess.WriteLine(@"md " + context.Request["Dir"]);
                psCmdPmpt.WaitForExit(2000);
                swProcess.WriteLine("EXIT");            
                //
                String results = srProcess.ReadToEnd().Trim();
                //
                psCmdPmpt.Close();
                swProcess.Close();
                srProcess.Close();
                context.Response.End();
            }
            catch (Exception exc)
            {
                string err = exc.Message;
            }
        }
    
        
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    Segue o código da chamada:

            private void btnSvn_Click(object sender, System.Windows.RoutedEventArgs e)
            {
                try
                {
    
                    UriBuilder httpHandlerUrlBuilder = new UriBuilder("http://localhost:49377/"+ "servico.ashx?Dir=TEST123");
                    System.Windows.Browser.HtmlPage.Window.Navigate(httpHandlerUrlBuilder.Uri, "_newWindow");
                }
                catch(Exception exc)
                {
                    string err = exc.Message;
                }
            }

    Como disse o diretório é criado mas a nova aba que se abre não fecha, e fica exibindo o erro descrito no inicio.

    []s
    Tuesday, February 09, 2010 7:27 PM

Answers

All replies

  • Náo ta so falanto o context.Response.Write() não ?
    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    Wednesday, February 10, 2010 1:51 AM
  • Olá Rui, obrigado pela resposta, o erro parou de aparecer, agora aparece a mensagem que coloquei no comando que você indicou, o que preciso fazer para essa nova página fechar?

    Minhas três últimas linhas do ProcessRequest:

    context.Response.Write("Fim do processo.");
    context.Response.End();
    context.Response.Close();


    Wednesday, February 10, 2010 10:44 AM