HTTPHandlerからこの.ashxファイルをPOSTするページに文字列を返す最良の方法

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

質問

フォームが次のようなColdFusion WebページからPOSTされるASP.Net HTTPHandlerがあります:

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

この.NetハンドラがPOSTing ColdFusionページに文字列を返す最良の方法は何ですか?

2009年8月14日更新:

.ashxファイルで作成した解決策には、ハンドラーをPOSTした.cfmファイルのURLを保存し、ColdFusionとやり取りしたい結果文字列にクエリ文字列を追加することが含まれます。私のCF同僚は、このクエリ文字列データの有無を使用して、それに応じて.cfm Webページをフォーマットします。

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());
    }
役に立ちましたか?

解決

ProcessRequestメソッドの応答オブジェクトに文字列を直接書き込むだけです。

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

他のヒント

HTTPハンドラーからJSONを生成し、 jquery.post を使用してフォームデータを送信し、ColdFusionページで結果を取得できます。

ColdFusionに返される内容を知りたい場合は、実際に2つの方法があります。

最初の方法は、文字列をフォームに返し(wompが示唆するとおり)、二次フォームまたはその他の手段を送信することにより、ブラウザーから文字列を処理することです。フォーム内のすべての値がユーザー指定ではなく提供されているように見えるため、これは私がすることではありません。

2番目の方法は、CFがフォームポスト自体を処理することです。フォームから渡される値がCFで利用できると仮定すると、CFHTTPを使用して「偽造」することができます。フォーム投稿。 CFは結果を直接返し、そこからの応答を処理できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top