在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'部分的错误
在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的。
我的/ portal /目录中的所有aspx页面的最上面一行都有这个错误信息,而且我知道这是常见的。 我已经GOOGLE了这个错误信息,并没有结束,我看到很多post告诉我configuration/门户/文件夹作为应用程序在IIS(我有),和更多的post告诉我,我嵌套web.configs(但没有一个post提供了解决scheme的指导)。
我的设置是我的根目录中有一个web.config,然后我试图在/ portal /目录中创build一个公司门户。 / portal /目录有自己的(必要的)web.config。
我的web.config行50是这样的:
<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/> <anonymousIdentification enabled="true"/> <authentication mode="Forms"/> <membership defaultProvider="MyProvider">
所以我有domain.com/web.config和domain.com/portal/web.config …所以我的domain.com/portal/default.aspx页面将不会加载。
什么是真正的解决scheme呢? 我不知何故find一种方法来合并我的根web.config与我的/门户/目录web.config,或者我的方式在这里基地?
任何指导将不胜感激!
只是为了背景资料; ASP.NET网站的configuration信息在一个或多个Web.config文件中定义。 configuration设置以分层方式应用。 有一个“全局”的Web.config文件,它为Web服务器上的所有网站列出基线configuration信息; 该文件位于%WINDIR%\Microsoft.Net\Framework\version\CONFIG
文件夹中。 您也可以在您的网站的根文件夹中有一个Web.config文件。 此Web.config文件可以覆盖在“全局”Web.config文件中定义的设置,或者添加新的设置。 此外,您可能在您的网站的子文件夹中具有Web.config文件,这些文件定义新的configuration设置或覆盖层次结构中上级Web.config文件中定义的configuration设置。
Web.config中的某些configuration元素不能在应用程序级别之外定义,这意味着它们必须在“全局”Web.config文件或网站根文件夹中的Web.config文件中定义。 <authentication>
元素就是这样一个例子。 上面的错误信息表明在网站的一个子文件夹中有一个Web.config文件,其中有一个configuration元素无法在应用程序级别之外定义。
资料来源: http : //scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
你已经正确地确定了2种可能的方法。
1 – 根据你的第二个web.config的内容,如果你的设置允许(即相同的身份validation方法) – 添加<authentication>
设置和应该全局定义的任何其他元素到顶部的web.config
2 – 如果你不能合并web.config内容,那么你应该能够通过下面的链接存档链接中包含的步骤,将子文件夹转换为IIS中的Web应用程序。 原始链接不再有效。 (见存档 )希望这有助于。
正如RY4N上面所说的,它不一定是导致问题的Project文件夹中的web.config。 在某些情况下,我发现在Debugconfiguration文件下运行一个构build会在有问题的项目下的Debug文件夹中留下碎片。 这里通常会有一个web.config文件,当你在发布configuration文件下运行一个版本时,会导致上面的错误。
此处适用的解决scheme是删除在项目目录下创build的先前构build的整个Debug文件夹。
对于它的价值,我收到了错误,“在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的。 最后通过清除\ myWebApp \ obj \ Debug和\ myWebApp \ obj \ Release目录来解决它。 我还需要设置一个默认启动页面。 但是,然后,该应用程序然后启动罚款。 HTH。
这也发生在我的家用电脑,但只有当我启用发布configuration生成视图,并build立一个释放configuration。 否则它没有发生。
虽然构build视图选项是非常好的,我结束了禁用它,因为这个“错误”总是会popup,让我无法运行应用程序。
只是说
如果你升级 (如2008 – > 2010) 项目 Visual Studio将创build一个备份(如果你允许的话)在项目解决scheme,这是添加到新的解决scheme,旧的Webconfig是上面指出的错误,然后可以发出。
“ Web.config文件在网站的一个子文件夹中,而不是在应用程序级别之外定义的configuration元素之一。 ”@benni_mac_b
解决方法:在这种情况下,只需从项目和解决scheme中删除备份文件夹即可。
我想出了另外一个可能的原因。
我有一个旧的Web应用程序内置2.0。 我将其迁移到4.5解决scheme。
在Visual Studio中构build和debugging应用程序就好了,但是当我试图发布Web应用程序时,这个错误一遍又一遍地发生。
我终于发现问题是web.config文件的Build Action是“Embedded Resource”,而不是“Content”。 另外,复制到输出目录被设置为“始终复制”而不是“不复制”。 我不知道什么时候进行了这些设置,但是我相信它已经回到了2.0版本的应用程序中。
修改web.config文件的设置允许Visual Studio 2012发布中的发布操作完美地工作。
我在MVC项目中遇到同样的问题。 我尝试发布时发生错误。 原来obj文件夹应该是空的(或者至less不包含任何web.config
)。
对于我来说,“运行Clean
并不能解决问题。
我解决了这个问题,在任何构build之前清理obj
文件夹(在我的情况下,构build项目不会花费太长的时间)。
我卸载了该项目,并将以下内容添加到BeforeBuild目标中
<Target Name="BeforeBuild"> <Delete Files="$(SolutionDir)\$(ProjectDir)\bin\**\*.*" /> <Delete Files="$(SolutionDir)\$(ProjectDir)\obj\**\*.*" /> <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\bin" /> <RemoveDir Directories="$(SolutionDir)\$(ProjectDir)\obj" /> <Message Text="Clean obj/bin from web project" /> </Target>
希望这可以帮助
我也有这个问题,它发生后,我用发布向导发布我的网站到网上。
经过深入的研究,我在Connect网站上发现了这个Bug报告, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level
一位MS代表回答,并解释了为什么这是发表时遇到的问题,他还包括一个临时的解决方法,为我解决这个问题。
我仅在发布应用程序时遇到此错误。
web.config(和转换)文件的属性设置为:
-
Build Action - None
-
Copy to Output - Always
。
解决scheme是将设置更改为:
-
Build Action - Content
-
Copy to Output - Do not Copy
再次删除并创build虚拟目录。 右键单击并将虚拟目录转换为“ 应用程序 ”
“在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的,这个错误可能是由于虚拟目录没有被configuration为IIS中的应用程序。
我在VS.NET有这个问题。 原来,当我configuration一些configuration转换我错误地设置Web.config文件的属性“复制总是”。 我通常将我的转换文件设置为“始终复制”,但将web.config根文件保留为“不要复制”。
注意,因为改变web.config的属性也会改变所有的嵌套变换。
所以,要解决:
1)将web.config更改为“不要复制”
2)或者,如果您使用configuration转换,请将其设置为“始终复制”
3)从解决scheme中删除obj和bin文件夹(这些文件夹可能不可见,因此请在解决scheme资源pipe理器中select项目节点,然后单击“显示所有文件”工具栏button。
4)发布
为我工作。
对我来说,原因是obj文件夹下的网站文件夹和多个web.config出现后build立不同的configuration。 我通过从网站的movong obj文件夹解决了vs2012下的问题。 为此,我在网站项目文件的每个configuration中都添加了manualy(记事本)$(SolutionDir)\ Obj \ $(Configuration)。
当我发布这个网站的时候,我遇到了同样的问题,如果我build立这个网站,我不会遇到问题,但是在发布的时候,我会得到这个可怕的错误:
“在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的,这个错误可能是由于虚拟目录没有被configuration为IIS中的应用程序”
我尝试了这篇文章中提到的所有东西,但没有任何的解决办法,对我而言,只是创build一个与我一直使用的完全相同的新发布configuration文件,并且运行良好,不会出现错误与新的configuration文件,但与旧的。 不知道有什么区别,但至less我可以发布我的MVC项目。
希望这可以帮助别人!
这是另一个原因 – 如果您将整个networking应用程序复制到其自己的子文件夹中,则会出现此错误。 当我从一台机器复制到另一台机器时,我设法做到了这一点 – 刚刚被要求查看大约2年的差距,并发生错误后的网站。 花了一点点搞清楚 – 因为我没有多个configuration文件。
我有这个问题,并通过清理我的解决scheme旧组件等解决。
从vs:Build> Clean Solution
然后重build。
Windows开始 – >打开网站 – > IIS – >右键单击您的网站 – >pipe理网站 – >高级设置 – >浏览物理path – >尝试select当前select的子文件夹。
逻辑是子文件夹内的Webconfiguration文件正在尝试进行更改,这是不允许的,必须是选定的文件夹: http : //scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
确保你不会陷入访问本地站点的错误,通过localchost / mysite.test这应该是mysite.test这会给你这个错误。
当你像localhost / dir_name一样访问你的网站时,在这种情况下,你的web.conf会低于根级,因此会出现这个错误。
我正在迁移应用程序,应用程序中有多个应用程序(多个web.configs)..我所做的是进入IIS,然后右键单击子文件夹,然后“转换为应用程序”,它的工作。
我得到这个错误不同于其他人:
我从vs2010迁移到web部署项目vs2012和一个新的Web发布configuration文件。
我在vs2012中创build了一个新的web发布项目,发布到文件系统(我们有一个单独的安装程序生成器,这是一个商业应用程序),我发布到已链接到IIS的现有Web项目中的文件夹。
这导致发布过程中的错误,最初让我感到困惑,因为我发布到文件系统,而不是IIS(我认为)。
解决scheme是将发布到文件夹更改为Web项目之外。
尝试在网站中部署子网站时,也会出现此错误。
解决scheme是:
- 您必须删除一些configuration选项卡,如: configuration文件 , 成员资格 , roleManager ,在子web.config中的sessionState
- 将身份validation更改为无:
<authentication mode="None" />
- 并去IIS右键点击子文件夹– >添加应用程序。
- 重置IIS以解决此问题。
如果得到其他问题,请不要犹豫,我也许会find帮助。
从解决scheme资源pipe理器中单击Web.config
文件并更改
复制到输出目录=不要复制
在localhost
但是当我在服务器上发布一个版本的时候,我开始了几页相同的错误。 然后,我清理解决scheme,重build和发布,事情得到修复。