MVC4 HTTP错误403.14 - 禁止

时间:2012-07-11 04:29:29

标签: .net asp.net-mvc asp.net-mvc-4 iis http-status-code-403

我已经构建了一个.net4.5 ASP.NET MVC4 Web应用程序,它可以在本地运行(IIS Express和开发服务器),但是一旦我将它部署到我的Web服务器,就会抛出403错误。我在服务器上安装了.Net 4.5RC,甚至试过了 aspnet_regiis -i 有人认为每个人都推荐使用以前版本的MVC / .Net,但它没有用。

有什么想法吗?

修改: 有关情况的更多信息。服务器是32位,我有4个其他MVC3应用程序可以正常工作。这只是我的MVC4应用程序无法正常工作。

17 个答案:

答案 0 :(得分:172)

尝试

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

通过

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

答案 1 :(得分:22)

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

  1. 您已将网站设置为IIS中的应用程序
  2. 您在服务器上安装了.NET 4.5
  3. 您已将应用程序池设置为运行正确版本的     .NET框架(即它未设置为.NET 2.0
  4. 您正在使用应用程序池中的集成管道
  5. .NET 4.5实际上是在IIS中注册的。有关类似问题/解决方案,请参阅this post
  6. 通常,a和d是围绕MVC部署到IIS的最大问题

答案 2 :(得分:11)

也许......如果您碰巧使用发布向导(就像我一样)并选中“发布时预编译”复选框(就像我一样)并看到相同的症状......

是的,我击败了自己的头部,但在取消选中此框后,看似无关的设置,所有描述的症状在重新部署后消失。

希望这可以修复一些人。

答案 3 :(得分:9)

Windows的&GT;开始 - &gt;打开和关闭寡妇功能

确保在

中检查所需的选项

enter image description here

答案 4 :(得分:6)

申请前

runAllManagedModulesForAllRequests="true"/>

考虑下面的链接表明一个不那么激烈的替代方案。在帖子中,作者对本地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

答案 5 :(得分:5)

Visual Studio 2012中有Refactor --> Rename Bug错误地重命名了RouteConfig.cs中url参数的文字字符串值中的“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 }
);

答案 6 :(得分:2)

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

答案 7 :(得分:2)

如果在使用开发服务器进行测试时使用集成管道,然后在实时IIS 7.5 Web服务器上安装为经典管道模式,也可以获得403,同时我也错过了我的app_data文件夹,这也是必需的

答案 8 :(得分:1)

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

你可以使用上面的代码

答案 9 :(得分:1)

我已将新应用的应用程序池设置为IIS中的DefaultAppPool,显然正在使用带有Classic的{​​{1}}管道。

要解决此问题,我使用.NET v.2.0管道和Integrated创建了一个新的应用池。只为这个新的应用程序,然后一切都按预期开始工作。

不要忘记将此新应用程序池分配给应用程序。在IIS中选择应用程序,单击.NET v4.0,然后为该应用程序选择新的应用程序池。

答案 10 :(得分:0)

在我的情况下,Windows功能和aspnet_regiis -i都没有完成工作。经过几个小时的互联网挖掘,我制定了自己的解决方案:

  1. 在模块的IIS管理器中,我在UrlRoutingModule-4.0节点中将继承更改为本地:

    enter image description here

  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>
    
  3. 希望有所帮助

答案 11 :(得分:0)

我最近经常看到的是IIS并允许32位应用程序运行

这是你尝试过的。否则我们需要有关生产和开发服务器版本的更多信息

答案 12 :(得分:0)

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

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}

答案 13 :(得分:0)

就我而言,我的应用程序的默认页面是index.html,默认文档选项中缺少该页面。添加它修复了403.14 Forbidden错误。

答案 14 :(得分:0)

我解决了打开visual studio的问题,扩展了引用并将属性“Copy Local”更改为“True”。

我发现这比较旧版本的dll和我的新版本的Dll(不起作用)

答案 15 :(得分:0)

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

我通过卸载程序和功能中的所有ASP.NET项目,然后使用添加角色和功能重新安装ASP.NET服务器管理器来解决此问题:选择基于角色或基于功能的安装,选择我的服务器,然后为Select Server Role选择Web Server(IIS)/ Web Server / Application Development,然后单击ASP.NET 4.5,确认安装了一个先决条件,然后重新安装ASP.NET 4.5。

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

答案 16 :(得分:0)

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