8

我已经为我的 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# 从处理程序获取响应。

谢谢。

4

2 回答 2

22

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

更多信息

于 2012-07-18T06:56:38.140 回答
5

我找到了另一种方法。如果您想从同一个项目中访问它,这非常容易。

在后面的代码中使用它的步骤

  1. 基本上它创建一个具有类名的类。
  2. 您可以创建该类的对象。
  3. 然后就可以调用了ProcessRequest
  4. 它将执行该处理程序。

假设我创建了一个处理程序如下

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 ]

编辑 1

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;
        }
    }
}
于 2014-06-04T04:57:03.627 回答