使用c#如何从经典的ASP内部请求转换.QueryString转换为NameValueCollection
本文关键字:转换 请求 内部 QueryString NameValueCollection ASP 经典 使用 | 更新日期: 2023-09-27 17:50:35
我正在尝试在c#中使用经典ASP内部对象。通过使用ASPTypeLibrary
我想将经典ASP请求对象Request.QueryString
和Request.Form
转换为NameValueCollections。
我该怎么做?
我想转换请求。QueryString和Request。将对象形成NameValueCollections。我该怎么做呢?
它们的返回类型都是NameValueCollection
:
-
public NameValueCollection QueryString { get; }
-
public NameValueCollection Form { get; }
您可以简单地查找它们,例如:
PrintKeysAndValues(Request.Form);
PrintKeysAndValues(Request.Request);
public static void PrintKeysAndValues( NameValueCollection myCol ) {
Console.WriteLine( " KEY VALUE" );
foreach ( String s in myCol.AllKeys )
Console.WriteLine( " {0,-10} {1}", s, myCol[s] );
Console.WriteLine();
}
所以你不需要转换它们
"convert"是什么意思?这两个属性 NameValueCollections
:
-
HttpRequest.Form
是表单变量的NameValueCollection
。如果页面是使用HTTP谓词POST
发布的,则数据来自请求体;如果页面是使用HTTP谓词GET
发布的,则数据来自查询字符串。 -
HttpRequest.QueryString
是键/值对的NameValueCollection
取自…等等……查询字符串形式为...?key1=value1&key1=value1&...
。任何重复的键将导致值被连接成单个字符串,每个单独的值用逗号分隔:...?foo=1&foo=2&foo=3
将导致键foo
具有值1,2,3
。
?
之后的URI中的所有内容(直到第一个#
表示片段的开始,或URI的结束,无论哪个先到)都是查询:其解释完全取决于权限其URI。遗憾的是,微软的HttpRequest
类为您做了决定。
旧的帖子,但也许有人仍然需要一个答案,这个和如何访问不同的内容从ScriptingContext
。我花了将近一年的时间才弄清楚它是如何工作的。
这段代码为我获得QueryString
。在这个例子中,我再次将其构建为一个完整的字符串:
foreach (var item in _scriptContext.Request.QueryString)
{
foreach (var q in _scriptContext.Request.QueryString[item])
qs += item + "=" + q + "&";
}
if (qs.EndsWith("&")) qs = qs.Substring(0, qs.Length - 1);
在这种情况下得到ServerVariables
:
var uri = "";
foreach (var item in _scriptContext.Request.ServerVariables["URL"])
uri = item.ToString();
Application
和Session
直接返回内容:
var app_var = _scriptContext.Application["application_var"]
var sess_var = _scriptContext.Session["session_var"]
读取cookie是这样的:
dynamic value = (IReadCookie)_scriptContext.Request.Cookies["cookieName"];
var yourCookie = value.Item().ToString();