Il modo migliore per restituire una stringa da un HTTPHandler a una pagina che pubblica questo file .ashx

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

Domanda

Ho un HTTPHandler ASP.Net che viene POSTATO da una pagina web ColdFusion il cui FORM assomiglia 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" />

Qual è il modo migliore per questo gestore .Net di restituire una stringa alla pagina POSTing ColdFusion?

Aggiornamento EDIT del 14 agosto 2009:

La soluzione che ho trovato nel mio file .ashx prevede il salvataggio dell'URL del file .cfm che ha POST inviato il mio gestore e l'aggiunta di una stringa di query con le stringhe di risultati che desidero comunicare a ColdFusion. Il mio collega CF utilizza la presenza o l'assenza di questi dati di querystring per formattare la pagina web .cfm di conseguenza:

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());
    }
È stato utile?

Soluzione

Basta scrivere la stringa direttamente sull'oggetto risposta nel metodo ProcessRequest.

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

Altri suggerimenti

Puoi generare JSON dal tuo gestore HTTP e utilizzare jquery.post per inviare i dati del modulo e ottenere risultati nella pagina ColdFusion.

Se vuoi che ColdFusion sappia cosa viene restituito, ci sono davvero due modi per farlo.

Il primo è quello di restituire la stringa al modulo (come suggerito da Womp) e quindi gestirla dal browser, inviando un modulo secondario o altri mezzi. Dal momento che sembra che tutti i valori nel modulo vengano forniti anziché forniti dall'utente, questo non è ciò che farei.

Un secondo metodo sarebbe che CF gestisse il post stesso del modulo. Supponendo che i valori passati dal modulo siano disponibili per CF, puoi utilizzare CFHTTP per "falsificare" un post di modulo. CF verrebbe restituito il risultato direttamente e potresti gestire la risposta da lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top