令我感到羞耻,因为我几乎无法使用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和许多其他地方,但到目前为止还没有能够在这个问题上联系点。
答案 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") {