关于此代码如何使用Web命名空间的说明

时间:2009-02-14 20:35:38

标签: c# asp.net

HttpContext context =((HttpApplication)sender).Context;

在上面的例子中,为什么我们将发送者转换为HTTPApplication而不是HTTPContext?

另外,括号的目的是什么?我知道它们是用于转换,但是如果你摆脱了HTTPApplication和周围的括号,那就离开了:

(sender).Context;

为什么不发送者.Context?或者一般来说,为什么使用括号呢?我依稀记得这是一种铸造方式,但不记得细节。

其次:

 string url = context.Request["url"];
 int cacheDuration = Convert.ToInt32(context.Request["cache"] ?? "0");
 string contentType = context.Request["type"];
编辑:我意识到你可以写:

collection["key"] = "value";

这适用于基于密钥的集合,您可以将值存储在名为“key”的密钥中。所以我认为你得到的密钥是“url”的网址是对的吗?

我知道这是在使用HTTPContext,但在索引器中,什么是“url”意味着什么?它只是一个字符串,表示网址,甚至不是真正的网址。同样地,对于“缓存”和“类型”。如果一个人写了“type”,就像在最后一行代码那样,是否会回到使用的类型(HTTP / HTTPS)?

由于

1 个答案:

答案 0 :(得分:1)

需要将sender投射到HttpApplication,因为(大概)是实际类型 - 然后通过HttpContext获取 HttpApplication.Context属性。

鉴于此,你需要演员,因此包围是合理的。

对于第二部分:"url""cache""type"只是请求参数的名称(来自Cookie,表单提交,服务器的documented变量或URL查询参数)。所以原始网址可能是:

  

http://server.com/Foo.aspx?url=someurl&cache=10&type=text/plain

......或者价值可能来自cookies等。我希望在给出这些信息的情况下,在这种情况下他们真正来自哪里会很清楚:)