如何创建新的HttpContext?

时间:2011-08-28 19:07:09

标签: c# .net asp.net httpcontext

public void getContent() {
    string VirtualPath = "~/Content.aspx";
    var page = BuildManager.CreateInstanceFromVirtualPath( VirtualPath, typeof( Page ) ) as IHttpHandler;
    page.ProcessRequest( HttpContext.Current );
}

我正在使用该函数加载来自不同文件的内容,但是“page.ProcessRequest(HttpContext.Current)”在当前上下文中插入内容,而我需要的是返回内容的函数指定的文件。

我想知道是否有一种工作方式来创建一个新的HttpContext,因此“page.ProcessRequest”不会在当前响应中插入任何内容。

3 个答案:

答案 0 :(得分:4)

据我所知,Oded是正确的。您无法轻松创建自己的HttpContext实例。但是,您仍然可以通过其他方式实现目标。

使用Server.Execute。 http://msdn.microsoft.com/en-us/library/ms150027.aspx

您可以指定要与TextWriter一起执行的HttpHandler以将内容转储到。

答案 1 :(得分:2)

您无法创建新的HttpContext,无需进行大量的解决方法。

这是ASP.NET和BCL的失败之一 - 使Web应用程序不可测试(或者至少很难在没有HttpContext的情况下进行测试。

我不清楚您的要求what I need is the function to return the content of the specified file - 您能否准确解释一下您的意思?

答案 2 :(得分:1)

查看Pex/Moles它包含一个模拟框架,可以模拟几乎任何类型或成员,即使它是密封的或静态的。 (它通过使用自定义测试主机来实现)