Asp.net mvc 在MVC5中使用Windows身份验证时出错

Asp.net mvc 在MVC5中使用Windows身份验证时出错,asp.net-mvc,Asp.net Mvc,我有MVC5项目的windows身份验证。它在本地工作,但当我将其发布到服务器时,出现以下错误: 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 appli

我有MVC5项目的windows身份验证。它在本地工作,但当我将其发布到服务器时,出现以下错误:

  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.
我的web.config中有这一行

<authentication mode="Windows"/>


但在MVC中,“视图”下还有另一个配置文件。我也添加了同样的错误。有什么想法吗?

这是其中一个无法修复的错误。您可以尝试删除所有bin/obj文件,看看是否有效。您可以关闭预构建视图的功能,这可能会解决您的问题,但您会失去其他好处,例如捕获视图上的编译时异常。通过编辑Web.config,可以停止视图上的预发布版本,如:

<PropertyGroup> 
    <MvcBuildViews>false</MvcBuildViews> 
</PropertyGroup>

假的
PropertyGroup的另一种选择是,(VS2013)右键单击项目->发布->设置->(取消选中)在发布期间预编译。正如前面提到的,您将丢失视图上的编译时异常

*并删除添加到视图文件夹中Web.config的更改

为了清楚起见,请查看此SO讨论


**注意:这些不是修复,只是可能对您有用或不可用的解决方法。

您收到该错误消息的原因很多,但您提到的与生产环境相关且不在本地的解决方法是很好的。 我建议两件事:

  • 很可能您有嵌套的web.config文件。(仔细检查)
  • 您是否检查以确保文件夹已配置为 应用(在您的IIS中,如果您有权访问它)

  • 你有多少网络配置文件?不止一个?是的,一个在项目中,一个在视图文件夹中。当我删除视图中的一个时,它不会识别我的视图。它们都有??如果是,请在视图中删除它,然后check@nikoom不确定你是否仍然有问题,但我用另一种解决方法编辑了我的答案。谢谢你的回复,但我有点困惑我的问题与你刚刚发布的链接有什么关系。在我看来,这是我必须改变的吗?好的,我尝试了这两种方法,但都不能解决问题,而且更改web.config的名称后,视图不再加载。正如我提到的,有两个配置文件。一个在项目中,一个在视图文件夹中。我知道也许问题在于我能做什么?关于第二个问题是的,它是应用程序。这是一个突然发生的随机问题。当我更换电脑并移动虚拟机时,我的问题就开始了。不确定这是否只是巧合,但我无法使用“调试”版本将4个网站中的2个发布到我的Azure dev服务器。如果我将构建更改为“Release”,它就可以发布了。在我做了我在回答中提到的配置更改之后,我能够发布配置,几天后,我将配置更改回预构建视图,它再次开始工作。如果您阅读了异常,它会告诉您预构建文件夹和配置有问题,但没有帮助。@Jacob Roberts此生没有什么是随机的。“总是有原因的。”我是根据个人经验说的。。。不管是随机的还是非随机的,它发生并在没有任何环境变化的情况下自行修复了。@JacobRoberts+1但我仍然相信有些东西改变了,使它为您工作