Melhor maneira de retornar uma string de um HTTPHandler para uma página que faz POST deste arquivo .ashx

StackOverflow https://stackoverflow.com/questions/1202070

Pergunta

Eu tenho um HTTPHandler ASP.Net que é postado a partir de uma página da Web do ColdFusion cujo FORM se parece com:

<form name="sendToHandler" action="http://johnxp/FileServiceDemo2005/UploadHandler.ashx" method="post">
<input type="hidden" name="b64fileName" value="fileservice.asmx.xml" />
<input type="hidden" name="strDocument" value="Document" />
<input type="submit" name="submitbtn"  value="Submit" />

Qual é a melhor maneira para este .Net Handler retornar uma string para a página POSTing ColdFusion?

EDITAR atualização em 14 de agosto de 2009:

A solução que encontrei em meu arquivo .ashx envolve salvar a URL do arquivo .cfm que postou meu manipulador e anexar uma string de consulta com a(s) string(s) de resultado que desejo comunicar ao ColdFusion.Meu colega CF usa a presença ou ausência desses dados de querystring para formatar a página .cfm adequadamente:

public void ProcessRequest(HttpContext context)
    {
        string returnURL = context.Request.ServerVariables["HTTP_REFERER"];  // posting CFM page
        string message = UploadFile(context);    // handles all the work of uploading a file
        StringBuilder msgReturn = new StringBuilder(returnURL);
        msgReturn.Append("?n=");
        msgReturn.Append(HttpUtility.UrlEncode(TRIMrecNumAssigned));
        msgReturn.Append("&m=");  // this is just a msg with performance data about the upload operation (elapsed time, size of file, etc.)
        msgReturn.Append(HttpUtility.UrlEncode(message));
        context.Response.Redirect(msgReturn.ToString());
    }
Foi útil?

Solução

Basta escrever a string diretamente no objeto de resposta no seu método ProcessRequest.

public void ProcessRequest(System.Web.HttpContext context)
{
    context.Response.Write(mystring);
}

Outras dicas

Você pode gerar JSON a partir do seu manipulador HTTP e usar jquery.post Para enviar dados de formulário e obter resultados na página ColdFusion.

Se você deseja que o ColdFusion saiba o que está sendo retornado, existem duas maneiras de fazer isso.

A primeira é retornar a string ao formulário (conforme sugerido pelo womp) e então manipulá-la no navegador, enviando um formulário secundário ou algum outro meio.Como parece que todos os valores no formulário estão sendo fornecidos em vez de fornecidos pelo usuário, não é isso que eu faria.

Um segundo método seria o CF lidar com o próprio post do formulário.Supondo que os valores passados ​​pelo seu formulário estejam disponíveis para o CF, você pode usar o CFHTTP para "falsificar" uma postagem do formulário.CF receberia o resultado diretamente e você poderia lidar com a resposta a partir daí.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top