如何在asp.net中使用ajax调用ashx文件

时间:2011-04-19 12:01:50

标签: asp.net ajax

我正在开发网站。我想调用一个ashx文件,它返回服务器上的所有进程列表

1 个答案:

答案 0 :(得分:2)

步骤:1创建处理程序和服务器端代码,如下所示

<%@ WebHandler Language =“C#”Class =“Handler”%>

using System;
using System.Web;
using System.Linq;
public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "application/json";

        var processes = System.Diagnostics.Process.GetProcesses();
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        context.Response.Write(serializer.Serialize(processes.Select(p => p.ProcessName)));


    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

第2步:为您的asp.net进程/应用程序池提供必要的权限。在开发版本中,您可以将web.config中的模拟标记添加为快捷方式。

<identity impersonate="true" userName="windows/usernamer" password="password"/>

第3步: 通过ajax或其他方式使用aspx页面中的处理程序结果。使用jquery库的示例如下。

<%@ Page Title="Home Page" Language="CS" MasterPageFile="~/Site.Master" AutoEventWireup="false"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js">

</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <ul id="processes">

    </ul>

    <script type="text/javascript">
        $(function () {
            $.get("handler.ashx", function (data) {
                $.each(data, function (index, element) {
                    $("#processes").append($("<li />").html(element));
                });
            });
        });    
    </script>
</asp:Content>

希望这有帮助。