无法获取Request.QueryString或类似的方法

时间:2015-09-06 19:59:22

标签: c# iis-7 cgi request.querystring

令我感到羞耻,因为我几乎无法使用C#,我无法从URL中读取参数。

我在IIS 7上运行C#cgi可执行文件作为应用程序。调用可执行文件的URL如下所示:

  

https://server/cgi/showEmail/showEmail.exe?email=john@gmail.com

代码如下所示:

using System;
using System.Web; // <---- isn't this for Request.QueryString ?
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;
using System.Data.SqlClient;

class showEmail
{
    static void Main(string[] args)
    {

        Console.WriteLine("\r\n\r\n");
        Console.WriteLine("<h1>Test</h1>");

        try
        {

现在,如果我使用下面的代码,程序会编译,但在浏览器中执行时会给出一个null异常:

        string email = HttpContext.Current.Request.QueryString["email"];
  

System.NullReferenceException:未将对象引用设置为对象的实例。在showEmail.Main(String [] args)

如果我在下面使用这段代码,那么乐趣就会停止在编译器上,编译器给出了“当前上下文”异常:

       string email = Request.QueryString["email"];
  

错误CS0103:当前上下文中不存在名称“请求”

...

我是否遗漏了可执行文件查看url参数所需的基本内容?

编辑:我已经浏览了sof和许多其他地方,但到目前为止还没有能够在这个问题上联系点。

2 个答案:

答案 0 :(得分:0)

HttpContext.Current.Request在控制台应用程序中不可用。

使用args参数接收查询字符串参数,就像我在下面做的那样。

for (int i = 0; i < args.Length; i++)
{
    Console.WriteLine("parameter[{0}] is [{1}]", i, args[i]);
}

您可能需要使用以下代码从args中收到的网址中提取参数。

var url=args[0];

var queryString = url.Substring(url.IndexOf('?')).Split('#')[0]
System.Web.HttpUtility.ParseQueryString(queryString)

答案 1 :(得分:0)

这就是我最终开始工作的方式,请记住这不是经过专业验证的代码,更多尝试尝试尝试......

using System;
using System.Data;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string email = Request.QueryString["email"] ?? "null";
        if (email != "null") {