错误:allowDefinition ='MachineToApplication'超出应用程序级别

Dee*_*ali 193 asp.net visual-studio-2012

我已经在ASP.Net中下载了在线项目.在运行应用程序时,我收到错误

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的.

我应该在web.config或其他地方进行哪些更改才能使其工作?

Joh*_*lly 97

我刚刚遇到了这个"喜悦".在我以发布模式发布Web应用程序之后,它似乎就出现了.

始终绕过我发现的问题的唯一方法是遵循此清单:

  1. 在解决方案配置为发布模式的同时清洁解决方案.
  2. 在解决方案配置为调试模式的同时清洁解决方案.
  3. 在解决方案配置为调试模式时构建.

  • 只有对我有用的答案.在此之后我还有很多其他的错误等着我,但是他们没有关系.我通过将`MvcBuildViews`设置为`true`来到这里. (18认同)
  • 我做了一个**干净的**,然后去了***项目属性 - > Web - >创建虚拟目录**然后问题得到了解决 (4认同)

Edu*_*eni 83

刚碰到这篇文章就发生在我身上.
只是Clean项目和错误消失了.(必须是VS2010错误)

  • 有时干净不会清除`obj`文件夹.这有时也需要删除. (22认同)
  • 删除bin和obj文件夹解决了这里的问题. (11认同)

xie*_*ecs 25

我在构建我的网站的第二个版本时遇到了这个问题.当我第一次构建它时,它没有发生.

我刚刚删除了bin和obj文件夹,运行一个Clean Solution并再次构建它,这次没有任何问题.

  • 这是VS Express 2012 for Web中唯一有效的解决方案.此外,我在创建解决方案配置后才开始收到此错误,并将MvcBuildViews设置为true,并将其添加到.csproj源中的PropertyGroup. (2认同)

小智 20

没有.您需要设置将网站放置为IIS中Web应用程序的目录.

  • 如果您在Web应用程序中将此错误视为错误,这就是解决方案!= P (2认同)

小智 16

当您尝试将项目作为网站打开时,会发生此错误.确定您是否已创建网站或项目的最简单方法是检查您的解决方案文件夹(即保存代码的位置),看看根目录中是否有*.sln文件,如果您这样做,那么'我创建了一个项目.

只是添加,我刚刚尝试通过从Visual Studio菜单中选择"文件","打开网站"来打开我创建的项目时遇到此错误,而我应该选择"文件","打开项目"代替.我意识到,我一脸瘫痪:)


Mar*_*rek 12

在Visual Studio 2013中,我一直在努力解决这个问题,并且很容易解决,只需遵循异常所说的 "虚拟目录未被配置为IIS中的应用程序"

在我来说,我已经WebService栽内IIS website如此

  1. 我在IIS管理器中打开了网站
  2. 右键单击WCF文件夹
  3. 点击 Convert to Application
  4. 然后提交 Ok

WCF恢复运行.


Ode*_*ded 10

该错误表明您使用的代码期望在IIS上设置虚拟目录.

查找文档并添加所需的虚拟目录.它应该是一个包含web.configin(而不是根目录)的目录.

  • 我的一个人在他的网站上有他的`<authentication mode ="Forms"> <forms name ="..."loginUrl ="〜/ Login/Login /"timeout ="2880"/> </ authentication>` `Views`在`Views`而不是trunk文件夹,这导致了这个问题. (10认同)
  • 删除较低目录中的第二个web.config解决了我的问题. (8认同)

Sha*_*man 10

如果您有启用了视图构建的MVC项目,其中一个解决方案是在构建之前删除obj文件夹.添加到项目文件:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

以下是文章:如何在构建或部署之前删除bin和/或obj文件夹


Sus*_*Guy 8

最近的web.config更改可能在错误的web.config文件中.

一个<machineKey...>属性已被添加到浏览/ web.config中.无论有多少次清理和重建,错误仍然存​​在.修复是将属性移动到根/web.config.


vis*_*uqi 6

如果你遇到过这个错误

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的

解决方案
我和VS 2012有同样的问题.我解决了这个问题

  1. 卸载当前项目
  2. 编辑你的.csproj
  3. 找到这个 <MvcBuildViews>false</MvcBuildViews>
  4. 而不是false将值更改为true
  5. 再次加载您的项目,您不应该再有这个错误

如果你有,那么一个解决方案就是删除编译器生成的项目中obj文件夹的内容.

  • 这很奇怪,将`MvcBuildViews`设置为`true`就是我首先得到错误的方法. (17认同)
  • 我在*发布和调试模式下都做了一个"清洁解决方案",现在构建工作也是`<MvcBuildViews> true </ MvcBuildViews> (3认同)

pep*_*epr 5

在我的情况下,问题出现在我将项目发布到子目录之后.由于我缺乏知识,我将我的web_publish子目录放在web_project目录中.

很明显,web_publish包含的内容与Web.config项目包含的内容相同.但是,在嵌套子目录中搜索s 时,web_project不知道web_publish应该避免我Web.config.这样,Web.configs被复制并出现错误.

解决方案是把我web_publish放在别的地方.


Dru*_*uid 5

在我的情况下,有一个“备份”文件夹,其中包含整个网站的另一个副本。这意味着另一个web.config,因此构建因此错误而失败。我删除了“备份”文件夹,在“调试和发布”版本中执行了“干净”解决方案,错误消失了。