我正在开发网站。我想调用一个ashx文件,它返回服务器上的所有进程列表
答案 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>
希望这有帮助。