从服务访问asp.net库时,如何启动当前的httpcontext?

时间:2011-07-27 17:45:33

标签: .net asp.net vb.net httpcontext

我有一个在服务器上编译的asp.net项目。在同一台服务器上,我有一个运行Windows.net .dll引用方法的Windows服务。

除了需要访问httpcontext.current对象之外,一切正常。

我很确定.current为null的原因是它引用了共享库而没有运行该站点的实际实例。在该服务的先前版本中,我能够通过不使用上下文在asp.net中找到解决方法,但是现在这已经是最后的手段了,因为网站的大部分架构已经发生了变化。

是否有创建网站实例并为服务目的模拟当前的httpcontext?

2 个答案:

答案 0 :(得分:1)

ASP.NET框架实例化和管理HTTP上下文,在ASP.NET之外,它始终为null。你必须深入研究框架以找出如何创建它,但老实说,它不值得......

但是,您是否可以重新配置HttpContext引用以指向HTTpcontextbase?如果你这样做,HttpContextBase是一个基类,可以被任何人继承。很容易,你可以创建一个自定义的,以实现你想要的。您甚至可以创建自己的静态来包装HttpContext.Current,在应用程序中引用此静态,并在服务中引用此静态(但让服务最初实例化它)。

HTH。

答案 1 :(得分:0)

不是来自Windows服务。我认为这样做的正确方法是创建一个web服务来处理你需要的任何asp.net,并从你的windows服务调用该web服务。

此外,如果您发布一些依赖于httpcontext.current的代码,则可能会找到替代方案(假设它们确实不依赖于请求/响应操作)。