我有一个在服务器上编译的asp.net项目。在同一台服务器上,我有一个运行Windows.net .dll引用方法的Windows服务。
除了需要访问httpcontext.current对象之外,一切正常。
我很确定.current为null的原因是它引用了共享库而没有运行该站点的实际实例。在该服务的先前版本中,我能够通过不使用上下文在asp.net中找到解决方法,但是现在这已经是最后的手段了,因为网站的大部分架构已经发生了变化。
是否有创建网站实例并为服务目的模拟当前的httpcontext?
答案 0 :(得分:1)
ASP.NET框架实例化和管理HTTP上下文,在ASP.NET之外,它始终为null。你必须深入研究框架以找出如何创建它,但老实说,它不值得......
但是,您是否可以重新配置HttpContext引用以指向HTTpcontextbase?如果你这样做,HttpContextBase是一个基类,可以被任何人继承。很容易,你可以创建一个自定义的,以实现你想要的。您甚至可以创建自己的静态来包装HttpContext.Current,在应用程序中引用此静态,并在服务中引用此静态(但让服务最初实例化它)。
HTH。
答案 1 :(得分:0)
不是来自Windows服务。我认为这样做的正确方法是创建一个web服务来处理你需要的任何asp.net,并从你的windows服务调用该web服务。
此外,如果您发布一些依赖于httpcontext.current的代码,则可能会找到替代方案(假设它们确实不依赖于请求/响应操作)。