Jqueryajax呼び出しからhttpハンドラーを作成しました。これは正常に機能していますjquery呼び出しは以下に記載されています
$.ajax({
url: "Services/name.ashx",
contentType: "text/plain",
data: {
CustMobile: a,
CustName: b,
CustEmail: c
},
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#loading").hide();
},
error: function () {
$("#loading").hide();
}
});
今私の問題は、これが私のコードビハインドを通してname.ashxハンドラーを呼び出すことができるということです。私はC#でasp.netを使用しています。スクリプト部分全体を書き込むResponse.write( "")によって呼び出すことができることを私は知っています。また、ページメソッドのスクリプトを登録します。
しかし、c#を使用してハンドラーにリクエストを送信し、ハンドラーから応答を返す方法はありますか。
ありがとう。
HttpWebRequest
(System.Net名前空間)を使用して、コードビハインドから任意のhttpリソースを呼び出すことができます。
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("<YourDomain>/Services/name.ashx?CustMobile=ValueOfA&CustName=ValueOfB&CustEmail=ValueOfC");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
絶対パスが必要ですが、ドメインをハードコーディングしたくない場合は、HttpContextからドメインまたはサーバーのURLを取得できます
私はこれを行う別の方法を見つけました。同じプロジェクトからアクセスしたい場合は、とても簡単です。
コードビハインドで使用する手順
ProcessRequest
を呼び出すことができます。次のようにハンドラーを作成したとします。
public class HandlerName : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//some code
}
public bool IsReusable
{
get
{
return false;
}
}
}
したがって、次のように使用できます
HandlerName obj=new HandlerName();
obj.ProcessRequest(HttpContext);
現在のコンテキストを取得でき、それをプロセス要求で渡す必要があることに注意してください。 HttpContextの詳細 [ 12 ]
これを行う必要がある場合は、ProcessRequest
メソッドをオーバーロードすることもできます。
public class HandlerName : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// some code
}
public void ProcessRequest(HttpContext context, string someString)
{
// do your coding here
}
public bool IsReusable
{
get
{
return false;
}
}
}
メソッドをオーバーライドしたくない場合は、次のように値を渡すことができますHttpContext.Current.Items
に値を追加できます
HttpContext.Current.Items["ModuleInfo"] = "Custom Module Info"
ProcessRequest
メソッドで次のように取得します
public class HandlerName : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string contextData = (string)(HttpContext.Current.Items["ModuleInfo"]);
}
public bool IsReusable
{
get
{
return false;
}
}
}