C#运行CGI程序实例

本文实例讲述了C#运行CGI程序的方法。分享给大家供大家参考。具体实现方法如下:

一、控制面板—>程序和功能—>打开或关闭Windows功能

把相关的功能勾上,点“确定”

二、新建一个网站,配置ISAPI和CGI限制、处理程序映射

三、CGI控制台应用程序代码:

代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace CGI
{
    class Program
    {
        static int i = 0;

static void Main(string[] args)
        {
            Thread thread = new Thread(new ParameterizedThreadStart(delegate(object obj)
            {
                while (true)
                {
                    if (i < 100)
                    {
                        i++;
                        Thread.Sleep(100);
                    }
                    else
                    {
                        string queryStr = Environment.GetEnvironmentVariable("QUERY_STRING");
                        string[] paramArr = queryStr.Split('&');
                        string[] keyValue = paramArr[0].Split('=');

Console.Write("Content-Type: text/html;charset=GB2312;\n\n");
                        Console.Write("{\"d\":\"您传入的参数为:" + keyValue[1] + ",输出结果为:" + i + "\"}");
                        Environment.Exit(0);
                    }
                }
            }));
            thread.Start();
        } // end of Main
    } // end of Program
}

四、Web程序页面代码:

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CGITest.aspx.cs" Inherits="Web监听.CGITest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="/JS/easyui/easyui.css" rel="stylesheet" type="text/css" />
    <script src="/JS/jquery.min.js" type="text/javascript"></script>
    <script src="/JS/easyui/jquery.easyui.min.js" type="text/javascript"></script>
    <script src="/JS/SimpoWindow.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $.ajax({
                type: "get",
                url: "http://localhost:160/cgi.exe?data=abcd",
                dataType: "json",
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    $("#msg").html(textStatus);
                },
                success: function (data, textStatus) {
                    $("#msg").html(data.d);
                }
            });

//倒计时
            UpdateTime(10);
        });

//倒计时
        function UpdateTime(n) {
            if ($("#msg").html().indexOf("请等待") != -1) {
                $("#msg").html("请等待(" + n + ")......");

if (n > 0) {
                    setTimeout(function () {
                        UpdateTime(n - 1);
                    }, 1000);
                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="msg" style="text-align: center; vertical-align: middle;">
        请等待......
    </div>
    </form>
</body>
</html>

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#在运行时动态创建类型的实现方法

    本文实例讲述了C#在运行时动态创建类型的实现方法.是C#项目开发中很实用的技巧.分享给大家供大家参考.具体分析如下: 具体来说,C# 在运行时动态的创建类型是通过动态生成C#源代码,然后通过编译器编译成程序集的方式实现动态创建类型的. 主要功能代码如下: public static Assembly NewAssembly() { //创建编译器实例. provider = new CSharpCodeProvider(); //设置编译参数. cp = new CompilerParamete

  • c#通过app.manifest使程序以管理员身份运行

    微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC).当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去. 通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行.微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序.

  • C#实现软件监控外部程序运行状态的方法

    本文实例讲述了C#实现软件监控外部程序运行状态的方法.分享给大家供大家参考.具体方法如下: 需要外挂一个程序,用于监控另一个程序运行状态,一旦检测到另一程序关闭,就触发一个事件做其他处理. 引用的类 复制代码 代码如下: using System.Diagnostics;//引入Process 类 声明 复制代码 代码如下: private Process[] MyProcesses; 主要处理部分,该段代码可放在定时器中循环检测监控的程序是否启动 复制代码 代码如下: MyProcesses

  • C#默认以管理员身份运行程序实现代码

    上篇博客写了一下如何通过网络时间更新系统时间,当时写的时候怎么测试都不成功,后来想想是不是我操作系统(当时是在win8上开发的)的问题.当时我猜应该是权限不够,导致无法修改系统时间,于是我以管理员身份运行了一次,结果测试成功!原来真的是权限的问题,于是就在程序里面加入了默认以管理员身份运行的代码.下面让我们看看是怎么实现的吧! 程序默认以管理员身份运行 复制代码 代码如下: static void Main(string[] Args) { /** * 当前用户是管理员的时候,直接启动应用程序

  • 在Linux上运行C#的方法

    本文实例讲述了在Linux上运行C#的方法.分享给大家供大家参考.具体方法如下: 在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库.编译器/解释器.运行环境.库以类和方法(函数)的形式提供常用的例程,简化大型程序的编写..NET框架也不例外,包含了许多类库.另外,把程序转换成可执行形式以及运行执行文件时,编译器和运行环境是必不可少的.Mono软件包包含了.NET类库的一部分.一个C#编译器和.NET运行环境CLR(Common Language Runtime,公共语

  • C#判断某程序是否运行的方法

    本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考. 具体实现方法如下: [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImp

  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)

    从 <<Windows Forms 2.0 Programming, 2nd Edition>>   -  Single-Instance Applications 这一章中, 学到了调用 VB.Net 中的 IsSingleInstance, 为 C# WinForm 添加只运行应用程序的单个实例 ( Single Instance Application). 是个好方法! 该方法显然从易用性上便捷与 Mutex 和 Process 这两种只运行单个应用程序实例的方法. Sing

  • c#异步操作后台运行(backgroundworker类)示例

    c#异步操作,BackgroundWorker类的使用,可以在后台运行需要的代码逻辑. 复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Windows.Fo

  • C#运行时相互关系浅析

    本文主要讲述运行时类型.对象.线程栈和托管堆之间的相互关系,静态方法.实例方法和虚方法的区别,以及内存的分配和回收. 线程栈:在一个进程中可能包含多个线程,一个线程在创建的时候,会分配到一个大小1MB大小的栈,栈用于存储方法的实参.形参以及方法内部的局部变量,栈是从高位内存地址向地位地址构建的,由于栈有先进后出的特点,所以先定义的变量后被回收. 下面来看一个简单的例子,让你更了解线程栈 由于线程栈是从高位开始分配内存,先分配的我就画在上面了,在调用F1();方法时,分配内存的顺序是:name->

  • C#隐式运行CMD命令(隐藏命令窗口)

    本文实现了C#隐式运行CMD命令的功能.下图是实例程序的主画面.在命令文本框输入DOS命令,点击"Run"按钮,在下面的文本框中输出运行结果. 下面是程序的完整代码.本程序没有使用p.StandardOutput.ReadtoEnd()和p.StandardOutput.ReadLine()方法来获得输出,因为这些方法执行后画面容易卡死.而是通过调用异步方法BeginOutputReadLine来获取输出,并在事件p.OutputDataReceived的事件处理方法中来处理结果. u

  • C#实现将程序运行信息写入日志的方法

    本文实例讲述了C#实现将程序运行信息写入日志的方法.分享给大家供大家参考.具体如下: 1.LogManager类 class LogManager { static object locker = new object(); /// <summary> /// 重要信息写入日志 /// </summary> /// <param name="logs">日志列表,每条日志占一行</param> public static void Wri

随机推荐