Web.Config回归Web Farm中的Global Config

时间:2008-10-28 12:05:43

标签: asp.net configuration web-config web-farm

这个问题让我们中的几个人难倒在办公室里。我们都是将ASP.NET应用程序部署到Web服务器场的新手,我对这些想法很感兴趣。

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

尝试从appSettings获取设置时会抛出异常。经过进一步调查,事实证明该节点实际上没有使用本地Web.Config,但它回退到.NET框架文件夹中的Web.Config(我们通过在那里添加键来证明这一点,它出现在测试页)。

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

以下是我们确认的清单:

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

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

任何人都有任何关于可能出错的建议吗?感谢我能得到的所有帮助!

感谢。

罗布

3 个答案:

答案 0 :(得分:6)

这是ASP.NET配置的层次结构。也许这有助于了解哪些设置会相互覆盖。

服务器

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

Root Web

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

网站

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

ASP.NET应用程序根目录

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

ASP.NET应用程序子目录

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

客户端应用程序目录

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


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

以下是简短摘要:

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

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

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

有很多方法可以解决这个问题。如果/子文件夹中不需要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");

答案 1 :(得分:0)

根据您在评论中的说法,我建议使用“尝试和错误”。

如果您按目的插入错误条目会怎样?应用程序是否失败或不会影响任何内容?

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

答案 2 :(得分:0)

首先,非常感谢那些回答的人,我非常感谢他们的帮助!

关于此问题的最新消息。这是一个艰难的!

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

服务器场看起来很奇怪(我完全无法控制或访问)。 系统管理员重新构建了服务器场,重新部署了解决方案,一切正常。

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

再次感谢, 罗布