MVC4 HTTP错误403.14 – 禁止

我已经build立了一个.net4.5 ASP.NET MVC4 web应用程序,它可以在本地正常工作(IIS Express&dev服务器),但是一旦我将其部署到我的web服务器,它会抛出403错误。 我已经在服务器上安装.Net 4.5RC,甚至尝试了aspnet_regiis -i位,大家推荐他们与以前版本的MVC / .Net的问题,但没有帮助。

有任何想法吗?

编辑 :关于情况的更多信息。 服务器是32位,我有4个其他MVC3应用程序工作正常。 这只是我的MVC4应用程序不工作。

尝试

 <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> 

通过

https://serverfault.com/questions/405395/unable-to-get-anything-except-403-from-a-net-4-5-website

错误403.14是不允许列出目录内容的HTTP错误代码。 请确定

  1. 您已经将该网站设置为IIS中的应用程序
  2. 你已经在服务器上安装了.NET 4.5
  3. 您已经将应用程序池设置为运行.NET框架的正确版本(即未设置为.NET 2.0
  4. 您正在使用应用程序池上的集成pipe道
  5. .NET 4.5实际上是在IIS中注册的。 请看这个post的类似问题/解决scheme

通常,a和d是关于MVC部署到IIS的最大问题

也许…如果你碰巧使用发布向导(像我一样),并select“预发布期间”checkbox(就像我做的),看到相同的症状…

是的,我殴打了自己的脑袋,但是在取消了这个看起来不相关的环境之后,所有描述的症状在重新部署之后就消失了。

希望这可以修复一些人。

Windows->开始 – >打开和closureswidowsfunction

确保你检查了需要的选项

在这里输入图像描述

申请之前

 runAllManagedModulesForAllRequests="true"/> 

考虑下面的链接暗示一个不太激烈的select。 在这篇文章中,作者提供了对本地web.config的下列修改:

  <system.webServer> <modules> <remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> </modules> 

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html

在Visual Studio 2012中有一个Refactor – > Rename Bug ,它错误地将我的RouteConfig.cs中的url参数的文本string值中的“id” 重命名 。 在Windows Server 2012和Windows Server 2008 R2中,这导致了403.14的全新和其他正确的设置。

 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

被改为

 routes.MapRoute( name: "Default", url: "{controller}/{action}/{renamed_text}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

如果在使用集成pipe道的开发服务器进行testing时,您也可以获得403,然后在您的实时IIS 7.5 Web服务器上作为传统pipe道模式进行安装,同时我还缺less我需要的app_data文件夹

如果您在Windows 8或Server 2012上运行IIS 8.5,则可能发现运行mvc 4/5(.net 4.5)在虚拟目录中不起作用。 如果您在主机文件中创build一个本地主机条目以指向您的本地机器,然后将一个新的本地IIS网站指向该文件夹(具有匹配的主机标题条目),那么您会发现它可以正常工作。

 <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> 

你可以使用上面的代码

我已经将新应用程序的应用程序池设置为IIS中的DefaultAppPool ,这显然是使用.NET v.2.0Classicpipe道。

为了解决这个问题,我使用Integratedpipe道和.NET v4.0创build了一个新的App Pool。 只是为了这个新的应用程序,然后一切开始按预期工作。

不要忘记将这个新的应用程序池分配给应用程序。 在IIS中select应用程序,单击Basic Settings ,然后为应用程序select新的应用程序池。

我最近看到更频繁的是IIS,并允许32位应用程序运行

这是你所尝试的吗? 否则我们需要更多关于生产和dev服务器版本的信息

我有一个不同的问题,在服务器2012年,我忘了启用asp.net 4.5,所以如果你有这个问题,请仔细检查,你启用它。

我在Azure和ASP.NET 4.5,IIS 8上运行Windows Server 2012 R2

我通过卸载程序和function中的所有ASP.NET项目来解决此问题,然后使用服务器pipe理器使用添加angular色和function重新安装ASP.NET:select基于angular色或基于function的安装,select我的服务器,然后select服务器angular色selectWeb服务器(IIS)/ Web服务器/应用程序开发,然后单击ASP.NET 4.5,确认安装的先决条件,然后重新安装ASP.NET 4.5。

我以前的search导致我相信,这个问题实际上源于ASP.NET的注册问题。 使用早期版本的ASP.NET,实际上有一个实用程序,可以运行注册ASP.NET而无需重新安装,但似乎不再可用。

我解决了打开视觉工作室的问题,扩大了引用,并将“Copy Local”属性更改为“True”。

我发现这个比较旧版本的DLL与我的新版本的Dll(这是不工作)

在我的情况下,我的应用程序的默认页面是index.html,这是缺省的文档选项。 添加它固定了403.14禁止的错误。

在我的情况下,问题是由自定义ActionFilterAttribute,这是一种全局filter属性引起的。 该属性通过Autofac实例化了一个服务,但服务在构造函数中崩溃了:

 public ActionFilterAttribute() { _service = ContainerManager.Resolve<IService>(); } public class Service: IService { public Service() { throw new Exception('Oops!'); } } 

在我的情况下,既没有Windowsfunction,也没有aspnet_regiis -i没有做的工作。 在网上挖了几个小时之后,我做出了自己的解决scheme:

  1. 在模块中的IISpipe理器中,我在UrlRoutingModule-4.0节点中将inheritance更改为local: 在这里输入图像描述

  2. 在web.config中,我粘贴了一些来自这个论坛的技巧:

<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="UrlRoutingModule-4.0"></remove> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add> </modules> </system.webServer>

希望它有帮助