Meilleure façon de renvoyer une chaîne d'un HTTPHandler à une page qui poste ce fichier .ashx

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

Question

J'ai un HTTP HTTPHandler ASP.Net qui est POSTÉ à partir d'une page Web ColdFusion dont le formulaire ressemble à quelque chose comme:

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

Quel est le meilleur moyen pour ce gestionnaire .Net de renvoyer une chaîne sur la page POSTing ColdFusion?

EDIT update 14 août 2009:

La solution que j'ai trouvée dans mon fichier .ashx consiste à enregistrer l'URL du fichier .cfm qui a POSTÉ mon gestionnaire et à ajouter une chaîne de requête avec la ou les chaînes de résultat que je souhaite renvoyer à ColdFusion. Mon collègue des FC utilise la présence ou non de ces données de chaîne de requête pour formater la page Web .cfm en conséquence:

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());
    }
Était-ce utile?

La solution

Écrivez simplement la chaîne directement dans l'objet de réponse dans votre méthode ProcessRequest.

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

Autres conseils

Vous pouvez générer du code JSON à partir de votre gestionnaire HTTP et utiliser jquery.post pour soumettre des données de formulaire et obtenir des résultats dans la page ColdFusion.

Si vous souhaitez que ColdFusion sache ce qui est renvoyé, vous avez deux possibilités.

La première consiste à renvoyer la chaîne au formulaire (comme suggéré par womp), puis à la gérer à partir du navigateur, en soumettant un formulaire secondaire ou un autre moyen. Comme il semble que toutes les valeurs du formulaire sont fournies à la place de celles fournies par l'utilisateur, ce n'est pas ce que je ferais.

Une deuxième méthode consiste pour CF à gérer le formulaire lui-même. En supposant que les valeurs transmises par votre formulaire soient disponibles pour CF, vous pouvez utiliser CFHTTP pour "simuler". un formulaire de poste. Les FC recevraient le résultat directement et vous pourriez gérer la réponse à partir de là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top