La mejor manera de devolver una cadena de un HTTPHandler a una página que publique este archivo .ashx

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

Pregunta

Tengo un ASP.Net HTTPHandler que se PUBLICA desde una página web de ColdFusion cuyo FORMULARIO se parece a:

<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" />

¿Cuál es la mejor manera para que este .Net Handler devuelva una cadena a la página POSTing ColdFusion?

EDITAR actualización 14 de agosto de 2009:

La solución que encontré en mi archivo .ashx consiste en guardar la URL del archivo .cfm que PUBLICÓ mi controlador y adjuntar una cadena de consulta con la (s) cadena (s) de resultados que deseo comunicar de nuevo a ColdFusion. Mi colega de FQ utiliza la presencia o ausencia de estos datos de cadena de consulta para formatear la página web .cfm en consecuencia:

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());
    }
¿Fue útil?

Solución

Simplemente escriba la cadena directamente en el objeto de respuesta en su método ProcessRequest.

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

Otros consejos

Puede generar JSON desde su controlador HTTP y usar jquery.post para enviar datos del formulario y obtener resultados en la página ColdFusion.

Si desea que ColdFusion sepa lo que se está devolviendo, entonces realmente hay dos maneras de hacerlo.

Lo primero es devolver la cadena al formulario (como lo sugiere womp) y luego manejarla desde el navegador, ya sea enviando un formulario secundario o por algún otro medio. Como parece que todos los valores en el formulario se proporcionan en lugar de los proporcionados por el usuario, esto no es lo que yo haría.

Un segundo método sería que CF controle el envío de formularios. Suponiendo que los valores que pasa su formulario están disponibles para CF, puede usar CFHTTP para '' falsificar '' una forma de post. CF devolvería el resultado directamente, y podría manejar la respuesta desde allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top