在Console应用程序中人工填充HttpContext对象

时间:2012-04-05 21:58:26

标签: c# asp.net httpcontext

我正在为log4net编写一个包装器库。该库应该能够捕获上下文信息,如查询字符串,cookie,表单字段等。

我从Console应用程序调用此包装类而不是TDD类。

有没有办法在Console应用程序中填充HttpContext对象,如下所示?

HttpContext c = new HttpContext(null);
c.Request.QueryString.Keys[1] = "city";
c.Request.QueryString[1] = "Los Angeles";
c.Request.QueryString.Keys[2] = "state";
c.Request.QueryString[2] = "CA";

然后按如下方式检索它?

Console.WriteLine(context.Request.QueryString.Keys[1]);

当我尝试上面的代码时,我收到以下异常。

Property or indexer 'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection.this[int]' cannot be assigned to -- it is read only 

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

模拟HttpContext并不容易。您可以使用Typemock Isolator来设置上下文,但它不是免费的。另一个(更好的)方法是抽象HttpContext并实现你的控制台(test?)客户端对抽象的模拟实现