小编典典

使用注册为 allowDefinition='MachineToApplication' 的部分超出应用程序级别时出错

all

allowDefinition='MachineToApplication'使用注册为超出应用程序级别的部分是错误的。

/portal/目录中所有 aspx
页面的第一行都有这个错误消息,我知道这是一个常见的错误消息。我已经用谷歌搜索了这个错误消息,我看到很多帖子告诉我将/portal/文件夹配置为 IIS
中的应用程序(我有),还有更多帖子告诉我我已经嵌套web.config了 s(但没有帖子提供指导解决方案)。

我的设置是web.config我的根目录中有一个,然后我试图在该/portal/目录中创建一个公司门户。该/portal/目录有它自己的(必要的)web.config

我的 web.config 第 50 行是这样的:

<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">

所以我有domain.example/web.config并且domain.example/portal/web.config......所以我的domain.example/portal/default.aspx页面不会加载。

什么是真正的解决方案?我是否以某种方式找到了将我的根目录web.config与我的/portal/目录合并的方法web.config,还是我在这里偏离了基地?


阅读 60

收藏
2022-06-22

共1个答案

小编典典

仅用于背景信息;一个 ASP.NET 网站的配置信息在一个或多个 Web.config
文件中定义。配置设置以分层方式应用。有一个“lobal”Web.config 文件,它说明了 Web
服务器上所有网站的基线配置信息;该文件位于%WINDIR%\Microsoft.Net\Framework\version\CONFIG文件夹中。您还可以在网站的根文件夹中拥有一个
Web.config 文件。此 Web.config 文件可以覆盖“全局”Web.config
文件中定义的设置,或添加新设置。此外,您网站的子文件夹中可能有 Web.config 文件,这些文件定义了新的配置设置或覆盖了层次结构中较高级别的
Web.config 文件中定义的配置设置。

Web.config 中的某些配置元素无法在应用程序级别之外定义,这意味着它们必须在“lobal”Web.config 文件或网站根文件夹中的
Web.config 文件中定义。该<authentication>元素就是一个这样的例子。上述错误消息表明网站的其中一个子文件夹中有一个
Web.config 文件,其中包含无法在应用程序级别之外定义的这些配置元素之一。

来源:http
://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

您已经正确识别了 2 种可能的方法。

1 - 根据您的第二个 web.config 的内容以及您的设置是否允许(即相同的身份验证方法) -
<authentication>设置和任何其他应该全局定义的元素添加到顶部 web.config

2 - 如果您无法合并 web.config 内容,那么您应该能够按照下面此链接存档链接中包含的步骤将子文件夹转换为 IIS 中的 Web
应用程序。原来的链接已经失效了。(见存档)希望这会有所帮助。

2022-06-22