我已经构建了一个.net4.5 ASP.NET MVC4 Web应用程序,它在本地工作正常(IIS Express和开发服务器)但是一旦我将它部署到我的Web服务器,它就会抛出403错误 . 我已经在服务器上安装了.Net 4.5RC,甚至尝试了 aspnet_regiis -i
位,每个人都建议他们解决以前版本的MVC / .Net的问题,但它没有帮助 .
有任何想法吗?
EDIT :有关情况的更多信息 . 服务器是32位,我有4个其他MVC3应用程序可以正常工作 . 这只是我的MVC4应用程序无法正常工作 .
17 回答
尝试
通过
https://serverfault.com/questions/405395/unable-to-get-anything-except-403-from-a-net-4-5-website
错误403.14是不允许列出目录内容的HTTP错误代码 . 请确定
您已将网站设置为IIS中的应用程序
您在服务器上安装了.NET 4.5
您已将应用程序池设置为运行适当版本的.NET框架(即,它未设置为.NET 2.0
您正在使用应用程序池上的集成管道
.NET 4.5实际上是在IIS中注册的 . 有关类似问题/解决方案,请参阅this post
通常,a和d是围绕MVC部署到IIS的最大问题
也许......如果您碰巧使用发布向导(就像我一样)并选中“在发布期间预编译”复选框(就像我一样)并看到相同的症状......
是的,我击败了自己的头部,但在取消选中这个看似无关的设置之后,所有描述的症状在重新部署后消失了 .
希望这可以修复一些人 .
Windows->开始 - >打开和关闭寡妇功能
请务必检查所需的选项
申请之前
考虑下面的链接,这表明一个不那么激烈的选择 . 在帖子中,作者对本地web.config提供了以下更改:
http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html
Visual Studio 2012中有一个Refactor --> Rename Bug错误地重命名了我的RouteConfig.cs中url参数的文字字符串值中的"id" . 这导致了在Windows Server 2012和Windows Server 2008 R2中进行全新且正确设置的403.14 .
被改为
如果在使用开发服务器测试时使用集成管道,然后在实时IIS 7.5 Web服务器上安装为经典管道模式,也可以获得403,我也错过了我的app_data文件夹,这也是必需的
如果您在Windows 8或Server 2012上运行IIS 8.5,您可能会发现运行mvc 4/5(.net 4.5)在虚拟目录中不起作用 . 如果您在主机文件中创建本地主机条目以指向本地计算机,然后将新的本地IIS网站指向该文件夹(具有匹配的主机标头条目),您将发现它可以正常工作 .
你可以使用上面的代码
我已将新应用程序的应用程序池设置为IIS中的
DefaultAppPool
,显然正在使用带有.NET v.2.0
的Classic
管道 .为了解决这个问题,我使用
Integrated
管道和.NET v4.0
创建了一个新的App Pool . 只为这个新的应用程序,然后一切开始按预期工作 .不要忘记将这个新的应用程序池分配给应用程序 . 在IIS中选择应用程序,单击
Basic Settings
,然后为该应用程序选择新的应用程序池 .我最近经常看到的是IIS,允许32位应用程序运行
这是你尝试过的 . 否则我们需要有关 生产环境 和开发服务器版本的更多信息
我有一个不同的问题,在服务器2012上我忘了启用asp.net 4.5,所以如果你有这个问题,请仔细检查你是否启用它 .
我在Azure和ASP.NET 4.5,IIS 8上运行Windows Server 2012 R2
我通过卸载程序和功能中的所有ASP.NET项目,然后使用添加角色和功能重新安装ASP.NET服务器管理器来解决此问题:选择基于角色或基于功能的安装,选择我的服务器,然后对于选择服务器角色选择Web服务器(IIS)/ Web服务器/应用程序开发,然后单击ASP.NET 4.5,确认安装先决条件,然后重新安装ASP.NET 4.5 .
我以前的搜索让我相信问题实际上源于ASP.NET的注册问题 . 对于早期版本的ASP.NET,实际上有一个实用程序可以运行来注册ASP.NET而无需重新安装,但这似乎没有任何可用的更长的时间 .
我解决了打开visual studio的问题,扩展了引用并将属性“Copy Local”更改为“True” .
我发现这比较旧版本的dll和我的新版本的Dlls(那是不行的)
就我而言,我的应用程序的默认页面是index.html,默认文档选项中缺少该页面 . 添加它修复了403.14 Forbidden错误 .
在我的情况下,问题是由自定义ActionFilterAttribute引起的,它是一种全局过滤器属性 . 该属性通过Autofac实例化服务,但服务在构造函数中崩溃:
在我的情况下,Windows功能和
aspnet_regiis -i
都没有完成工作 . 经过几个小时的互联网挖掘,我制定了自己的解决方案:希望能帮助到你