在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的

时间:2009-03-27 18:18:12

标签: asp.net iis iis-6

Configuration Error 
Description: An error occurred during the processing of a configuration file
required to service this request. Please review the specific error details 
below and modify your configuration file appropriately. 

Parser Error Message: It is an error to use a section registered as
allowDefinition='MachineToApplication' beyond application level.  
This error can be caused by a virtual directory not being configured 
as an application in IIS.

Source Error: 

Line 36:             ASP.NET to identify an incoming user. 
Line 37:         -->
Line 38:        <authentication mode="Windows"/>
Line 39:        <!--
Line 40:             The <customErrors> section enables configuration 

网上有很多关于此错误的引用,但所有这些引用都重复相同的2条建议,这两条建议都不适用于我的情况。

这是我的情景。

我有一个带有IIS 6的Server 2003.默认网站有4个虚拟目录,它们都配置为单独的应用程序。有些是Web服务,有些是纯ASP.NET站点。其中3个工作得很好,一个没有 - 从外面(当我登录到服务器并浏览localhost时我没有收到此错误。)

所有应用程序共享相同的应用程序池,并且它们都有自己的web.configs。我查看了很长的属性,但没有找到可以解释错误的区别。安全设置是相同的。我检查了MMC和文件系统中文件和文件夹的权限。应用程序池帐户(NETWORK SERVICE)和匿名Web用户都具有所需的访问权限,并且它们在所有应用程序中都是相同的。 这两个应用程序都启用了匿名访问并启用了集成安全性。

同样,当我从防火墙外部以匿名用户身份登录页面时,我只收到上述错误。当我在本地登录时,页面服务很好。 这让我觉得这个问题与安全/模仿有关。

无法运行的应用程序是使用VS 2008和.Net 3.5构建和部署的。它在web.config中有其他旧的应用程序没有的东西。我尝试逐步从web.config中删除设置,直到该网站完全无法工作,无济于事。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

由于经常出现这种情况,我忽略了一个小细节 - 一个防火墙规则,将我的请求转发到另一个端口上的不同网站。外部请求实际上是在此服务器上的另一个站点此其他站点已为虚拟目录配置了应用程序。一旦我关闭了另一个网站,这一点立刻变得明显。