我已经为我的Jquery ajax调用创建了一个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(“”)编写整个脚本部分来调用它。 Ans还注册页面脚本方法。
但有没有办法可以使用c#向处理程序发送请求并从处理程序返回响应。
感谢。
答案 0 :(得分:20)
您可以使用HttpWebRequest
(System.Net命名空间)
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("<YourDomain>/Services/name.ashx?CustMobile=ValueOfA&CustName=ValueOfB&CustEmail=ValueOfC");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
您需要一个绝对路径,但如果您不想对域进行硬编码,则可以从HttpContext获取域名或服务器URL
答案 1 :(得分:4)
我找到了另一种方法。如果你想从同一个项目访问它,这很容易。
在代码隐藏
中使用它的步骤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 [1 2]
如果您需要这样做,也可以重载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;
}
}
}