1

这个问题让我们几个人在办公室里难住了。对于将 ASP.NET 应用程序部署到网络场,我们都是新手,而且我的想法很新鲜。

我们有一个网络农场,应用程序被复制到所有这些农场。但是,我们遇到了问题..

尝试从中获取设置时引发异常appSettings。经过进一步调查,事实证明该节点实际上并未使用本地节点,Web.Config而是回退到Web.Config.NET 框架文件夹中(我们通过在此处添加密钥证明了这一点,这些密钥出现在测试页面上)。

我一定遗漏了一些东西,因为我的理解是只要文件在那里,IIS 就应该使用它!其中一台服务器似乎工作正常!

以下是我们已确认的清单:

  • 配置文件位于 app 目录中。
  • 所述文件的内容是正确的。
  • 从 IIS > 站点 > 属性 > ASP.NET > 编辑配置查看文件时,会显示正确的内容。

但是,在运行时使用的文件是全局文件 ( windows\ms .net\framework\v2\config\web.config)。

有人对可能出现的问题有任何建议吗?感谢我能得到的所有帮助!

谢谢。

4

3 回答 3

6

这是 ASP.NET 配置的层次结构。也许这可以帮助理解哪些设置会相互覆盖。

服务器

Machine.config:Machine.config 文件包含服务器上所有 Web 应用程序的 ASP.NET 架构。此文件位于配置合并层次结构的顶部。

根网

Web.config:服务器的 Web.config 文件与 Machine.config 文件存储在同一目录中,并且包含大多数 system.web 配置部分的默认值。在运行时,此文件在配置层次结构中从顶部倒数第二个合并。

网站

Web.config:特定网站的 Web.config 文件包含适用于该网站的设置,并通过该网站的所有 ASP.NET 应用程序和子目录向下继承。

ASP.NET 应用程序根目录

Web.config:特定 ASP.NET 应用程序的 Web.config 文件位于应用程序的根目录中,包含适用于 Web 应用程序并通过其分支中的所有子目录向下继承的设置。

ASP.NET 应用程序子目录

Web.config:应用程序子目录的 Web.config 文件包含应用于此子目录的设置,并通过其分支中的所有子目录向下继承。

客户端应用程序目录

ApplicationName.config:ApplicationName.config 文件包含 Windows 客户端应用程序(不是 Web 应用程序)的设置。


了解哪些 ASP.NET 文件和文件夹是通过文件夹和应用程序继承的,这对于开发和故障排除非常重要。

这是一个简短的摘要:

  • web.config 文件一直沿树继承,超过所有应用程序边界。
  • global.asax 仅存在于其应用程序中
  • /bin 和 /app_{folders} 只存在于他们的应用程序中

因此,这意味着根 web.config 文件中设置的任何内容都将沿用整个站点,即使某些文件夹被标记为应用程序也是如此。

如果 web.config 文件具有对程序集的引用,但子应用程序没有这些程序集,这会变得混乱。例如,假设您在站点的根目录中配置了一个 HTTP 模块,并从站点 web.config 文件中引用。如果您有一个名为 /subfolder 的子应用程序被标记为应用程序,那么 /subfolder 将尝试从 /subfolder/bin 加载 HTTP 处理程序。由于它不存在,因此将引发错误。

有多种方法可以解决这个问题。如果 /subfolder 中不需要 HTTP 处理程序,可能最干净的方法是通过在 /subfolder/web.config 文件中添加子句来“删除”引用。您可以使用 . 以下是如何删除子文件夹中的 HTTP 模块的示例:

<httpModules>
  <remove name="ErrorLog"/>
</httpModules>

以下是网站 web.config 的样子:

<httpModules>
      <add name="ErrorLog"  type="GotDotNet.Elmah.ErrorLogModule, GotDotNet.Elmah, Version=1.0.5527.0, Culture=neutral, PublicKeyToken=978d5e1bd64b33e5" />
</httpModules>print("code sample");
于 2008-10-28T12:12:02.063 回答
0

根据您在评论中所说的,我建议使用“Try and Error”。

如果您故意插入错误的条目会发生什么?应用程序是否失败或不影响任何事情?

尝试复制内容,然后从头开始删除并重新创建该文件。

于 2008-10-28T13:54:36.053 回答
0

首先,非常感谢回答的人,我非常感谢您的帮助!

只是关于这个问题的更新。这是一个艰难的!

事实证明,代码或配置没有任何问题。

服务器场似乎发生了一些奇怪的事情(我完全无法控制或访问)。系统管理员重新构建了农场,重新部署了解决方案,一切正常。

我想我们永远不会知道出了什么问题,但至少我们知道这不是开发问题!

再次感谢,罗布

于 2008-10-31T19:20:58.307 回答