Die beste Möglichkeit, eine Zeichenfolge von einem Httphandler auf eine Seite zurückzugeben, die diese .ashx -Datei veröffentlicht hat

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

Frage

Ich habe ein ASP.NET HTTPHandler, das von einer Coldfusion -Webseite veröffentlicht wird, deren Form ungefähr aussieht:

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

Was ist der beste Weg für diesen .NET -Handler, um eine Zeichenfolge auf die Posting ColdFusion -Seite zurückzugeben?

Update 14. August 2009 bearbeiten:

Die Lösung, die ich in meiner .ashx -Datei aufgetaucht bin, besteht darin, die URL der .cfm -Datei zu speichern, in der mein Handler gepostet wurde, und die Anhänge eines QueryString mit den Ergebniszeichenfolgen, die ich an Coldfusion zurückversetzen möchte. Mein CF -Kollege verwendet das Vorhandensein oder Fehlen dieser QueryString -Daten, um die .cfm -Webseite entsprechend zu formatieren:

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());
    }
War es hilfreich?

Lösung

Schreiben Sie einfach die Zeichenfolge direkt in das Antwortobjekt in Ihre prozessigische Methode.

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

Andere Tipps

Sie können JSON von Ihrem HTTP -Handler generieren und verwenden jquery.post So senden Sie Formulardaten und erhalten Sie Ergebnisse auf der ColdFusion -Seite.

Wenn Sie möchten, dass Coldfusion weiß, was zurückgegeben wird, gibt es wirklich zwei Möglichkeiten, dies zu tun.

Die erste besteht darin, die Zeichenfolge an das Formular zurückzugeben (wie von WOMP vorgeschlagen) und dann aus dem Browser abwickelt, indem sie entweder ein sekundäres Formular oder ein anderes Mittel einreicht. Da es so aussieht, als würden alle Werte im Formular anstelle von Benutzer geliefert, würde ich dies nicht tun.

Eine zweite Methode wäre, dass CF den Formular nach selbst verarbeitet. Unter der Annahme, dass die Werte, die von Ihrem Formular übergeben werden, für CF zur Verfügung stehen, können Sie CFHTTP verwenden, um einen Formularposten zu "fälschen". CF würde das Ergebnis direkt zurückgegeben, und Sie könnten die Antwort von dort aus verarbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top