【问题标题】:IIS Application Pool bin vs. *.vbIIS 应用程序池 bin 与 *.vb
【发布时间】:2014-01-02 01:02:55
【问题描述】:

我正在继承一个让我很困惑的网站的支持。该站点混合了经典的 ASP 和 .Net,其中一些“.Net”确实是某种转换过程的一部分,因此没有代码隐藏,并且都是像 PHP 或经典 ASP 那样的内联代码.目前的开发人员(参与了 4 年多)告诉我任何 .Net 都反对 1.0。根据我的理解,他的发布例程涉及直接复制他的开发目录的内容(与实际发布相比),因此所有 *.vb 文件(包括具有它们的页面的 *.designer.vb 文件)都是一切都在生产中。

让我如此困惑的领域是我知道 .Net 1.0 与 .Net 2.0 高度不兼容,因为它们在两个版本之间进行了所有重大更改。我想弄清楚的是,如果 vbproj 文件说它指向 VS 2002 的版本号,则 bin 目录中的 DLL 都引用 1.0.5000.0 用于 mscorlib 引用(系统等),但应用程序池为 .Net 2.0 配置了 IIS 是否实际上忽略了它会从 bin 目录中读取的内容,而是动态地从 .vb 文件中提取代码?我知道动态编译中引入的 VS 的“新”(当时)网站选项(相对于 Web 应用程序),但我不知道这是否发生在幕后。作为这个过程的一部分,事情变得更加模糊,我试图将站点迁移到我拥有的一组新服务器上,当我在 IIS 中创建站点时,我什至没有关注应用程序池,所以默认设置是分配的是 .Net 4。我们的客户服务人员正在新盒子上测试网站,一切正常。

我不知道这是否需要进入 StackOverflow 或 ServerFault,但选择 SO 是因为它与编程非常相关。有没有人对这一切如何运行有任何建议?

【问题讨论】:

  • 而且我认为去年我不得不升级 1.1 的东西很糟糕......以前的程序员有没有说明 DLL 是如何被使用的?不过,我很惊讶它适用于 ASP.NET 设置为 2.0。
  • 并非如此。每次我问一些事情时,似乎都会有很多困惑。老实说,我不完全确定他完全理解这一切是如何运作的。它引用 .Net 1.0 项目的事实在生产中设置为 .Net 2,而我们的暂存区域设置为 .Net 4,它的所有功能都令人费解。
  • 如果不管 .NET 框架设置如何,它都能正常工作,我几乎敢打赌 DLL 没有被 IIS 使用。尽管我不是 IIS 专家,但我看不出它会如何工作。绝对有兴趣看看是否有人可以回答这个问题。
  • 您使用的是哪个版本的 Visual Studio?

标签: asp.net .net vb.net iis asp-classic


【解决方案1】:

您必须在此处处理许多项目清理问题。

  1. 在开始更改之前,我会确保您在源代码管理中拥有解决方案,以便您可以根据需要回滚。
  2. 在任何项目中,您都可以从多个版本中引用 .NET BCL 函数,因为每个版本都不会全部更新。我会删除任何使用 1.1 的东西并将它们重构为新版本。
  3. 首先删除所有未使用的项目引用,这样您就知道自己在处理什么。见http://msdn.microsoft.com/en-us/library/vstudio/7sfxafba(v=vs.100).aspx
  4. 使用 Resharper 或 CodeRush 等第 3 方工具有助于快速清理代码。
  5. 查看 IIS 应用程序池设置以确认解决方案正在运行的 .NET 框架版本,以确认站点正在使用的 .NET 框架的实际版本。见http://msdn.microsoft.com/en-us/library/bb909693(v=vs.90).aspx。这些说明将根据运行 IIS 的服务器以及您在 dev/test/production 中运行的 IIS 版本而有所不同。

【讨论】:

  • 我们在 .Net 4 版本上启动并运行(尽管 DLL 仍然是 1.0)。接下来是浏览你提到的所有内容。我认为我们幸运的地方是大部分代码是内联的(相对于编译的),所以在这方面升级会更容易一些。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 2010-10-19
  • 2012-07-03
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
相关资源
最近更新 更多