C# C“哈希表”;“未设置对象引用”;

C# C“哈希表”;“未设置对象引用”;,c#,hashtable,C#,Hashtable,我有一个有趣的问题,我正在努力解决。下面的代码基本上是一个函数,用于将值与html文件合并,并给出结果集。为此,我使用了一个哈希表 功能如下(请记住,我继承了此功能,目前无法更改) 在我们的开发和实时服务器上,它工作得非常好。但是,我正在尝试将该应用程序部署到另一台生产服务器,并获取“对象引用未设置为对象的实例”。它正好在“Hashtable templateVars=new Hashtable();”行中断。所以我有点困惑。如果这是一个编码问题,那么它不应该在任何地方都能工作吗 不同生产服务器

我有一个有趣的问题,我正在努力解决。下面的代码基本上是一个函数,用于将值与html文件合并,并给出结果集。为此,我使用了一个哈希表

功能如下(请记住,我继承了此功能,目前无法更改)

在我们的开发和实时服务器上,它工作得非常好。但是,我正在尝试将该应用程序部署到另一台生产服务器,并获取“对象引用未设置为对象的实例”。它正好在“Hashtable templateVars=new Hashtable();”行中断。所以我有点困惑。如果这是一个编码问题,那么它不应该在任何地方都能工作吗

不同生产服务器之间的唯一区别是运行的OS和IIS。即服务器2005和IIS7与服务器2003和IIS6(这是它破坏的环境)的对比。两者都安装了高达3.5的.net framework。旧的操作系统和ISS会成为问题吗?这可能是许可/记忆的问题吗?尽管这听起来有点难以置信,因为我在新的生产服务器上使用的所有其他.net功能都工作得很好

我发现的所有关于哈希表的问题都与它没有被实例化有关。但是,我的错误发生在尝试实例化哈希表的行上


以前有人犯过这样的错误吗?如果有,你是如何解决的?我甚至很感激你给我的建议,我会试试看。如果将来有人遇到这个错误,我也会把结果发回。

我从来没有真正弄清这个错误的根源。使用Reflector Pro进行远程调试的建议也不起作用,这表明网站运行的虚拟服务器存在一些问题。检查日志文件显示了.net framework抛出的其他错误

该网站已使用IIS7和windows server 2008移动到新的虚拟服务器。它在新的环境中工作正常


这可能不是每个人的理想解决方案,也许重新安装框架可以解决我们的问题,但由于我们正在转换到新环境的过程中(出于其他原因),这个解决方案适合我们。

确实
System.Web.HttpContext.Current.Server.MapPath(“~/docs/Templatenr.htm”)
新服务器上是否存在此文件?运行应用程序的用户帐户也可以访问此文件吗?我个人建议使用Reflector Pro之类的工具调试哈希表构造函数的框架代码,以便查看异常实际从何处抛出。@Jimmy,Yes and Yes。然而,该功能甚至没有达到那么远,它停在第一行。@我快速浏览了Reflector Pro。它可以独立运行吗?看起来我只能通过VisualStudio运行它。由于此错误仅出现在生产服务器上,因此我无法从本地计算机上测试它。但是我今晚会玩一下,看看我能不能用它做点什么。你确定没有任何旧版本的项目程序集被缓存在某个地方吗?您是否检查并清除了prod机器上的本地程序集缓存?
public static string ParseTemplate(string _FileName, int _NumberofSomething)
{
  Hashtable templateVars = new Hashtable();
  templateVars.Add("NameOfFile", _FileName);
  templateVars.Add("NumberOfSomething", _NumberofSomething);
  TemplateParser.Parser parser = 
      new TemplateParser.Parser(
          System.Web.HttpContext
            .Current.Server.MapPath("~/docs/Templatenr.htm"), templateVars);
  return parser.Parse();
}