【问题标题】:Set HttpContext.Current.Application from Console Application从控制台应用程序设置 HttpContext.Current.Application
【发布时间】:2012-08-31 10:39:06
【问题描述】:

我正在创建一个控制台应用程序,它需要调用严重依赖 HttpContext 的方法。我可以模拟基本 HttpContext 以及身份验证,但我无法设置 HttpContext.Current.Application。有没有可能在里面设置数据?

这里有几个关于同一主题的问题,但无法从任何一个那里得到解决方案,因此最终在这里发布了另一个问题。

我的目标是让它发挥作用。

HttpContext.Current.Application("PageDefinitionCache") = pageDefinitions

有什么建议吗?

【问题讨论】:

    标签: asp.net console-application


    【解决方案1】:

    缓存位于 ASP.NET 工作进程中,您无法直接从控制台应用程序访问它。 HttpContext.Currentnull,因为您不在控制台应用程序中使用 aspx.net 工作进程。

    考虑在控制台应用程序中声明一个全局变量来模拟HttpContext.Current.Application 的行为。

    【讨论】:

    • 感谢您的回复。抱歉,我很久没有关注 tihs 了。由于 Web 架构也使用了相同的代码库,因此我无法重新编写或模拟 Application 对象。因此,我通过再次填充所需对象的数据来解决我的问题,以防它被发现为“NULL”。这样,我可以让相同的代码在两种架构中都运行良好。
    • 现在,当我们必须再次实现类似的应用程序时,我们通过拥有一个接口并实现它以对 Web 应用程序使用 'HttpContext.Current.Application' 并为控制台应用程序使用全局变量来实现通用代码可以保持通用。
    【解决方案2】:

    您不能在控制台应用程序中使用 HttpContext。 正如@matrxRapture 提到的,您可以通过使用全局变量来解决此问题,如果您正在寻找应用程序的当前目录路径,您可以使用 Assembly.GetExecutingAssembly().Location

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多