题
我正在使用 Visual Studio 2010 RC 运行 Windows 7 Ultimate(64 位)。我最近决定让 VS 在 IIS 上运行/调试我的应用程序,而不是在它附带的开发服务器上。
但是,每次我尝试运行 MVC 应用程序时,都会收到以下错误:
HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容。详细的
错误信息
模块目录列表模块
通知执行请求处理程序
处理程序静态文件错误
请求代码 0x00000000
网址 http://localhost:80/mySite/
物理路径C: myproject mySite
登录方式 匿名登录
匿名用户
我放置了一个 default.aspx
文件在目录中,我收到以下错误:
HTTP错误500.21-内部服务器错误处理程序“ pageHandlerFactory -Contegrated”在其模块列表中具有糟糕的模块“ ManageDpipelineHandler”
我是否还忘记采取任何其他步骤来使其正常工作?
笔记:我在安装VS 2010 RC后安装了IIS 7.5。我使用了 Visual Studio 2010 中 MVC 项目“属性”中“Web”选项卡下的内置“创建虚拟目录”按钮。我确保该应用程序正在使用 ASP.NET 4 应用程序池。
以下是我已安装的 IIS 功能。
解决方案
ASP.NET 4未在IIS注册。不得不在命令行运行下面的命令/运行
32位(86)的Windows
%WINDIR%\ Microsoft.NET \框架\ v4.0.30319 \ ASPNET_REGIIS.EXE -ir
64位(64位)的Windows
%WINDIR%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASPNET_REGIIS.EXE -ir
从大卫默多克的评论请注意:
这.NET版本已改变 因为这个答案被张贴。校验 该框架的版本是在 在%windir%\ Microsoft.NET \ Framework64 目录并更改命令 因此在运行前(这是 目前v4.0.30319)
其他提示
还有一点要确保你有在你的web.config以下设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
请确保您有在你的web.config以下设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<强>更好的解决方案:强>
尽管上述解决方案的工作绝对没问题的,因为它运行时,它可能会导致其他问题,您所有的每个请求(即使在.JPG的每个请求注册HTTP模块。 GIF的.css的.html .PDF等),很明显是浪费资源。代替
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0"/>
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>
确认先决条件属性为空意味着它会在所有请求运行。 [读取更多]( HTTP://www.britishdeveloper。 co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html 时, “读出的原始柱”)
另一个原因,有人可能会得到这个错误,如果该文件的 Global.asax中是不是在根文件夹中了。
我也收到此错误,并发现“HTTP重定向”并没有在Windows Server开启。本博客文章点了这一点还有:的 http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx
甜耶稣。我尝试了所有上面的东西(但发现我的设置相同)。如果您有问题的又一解决方案:
http://support.microsoft.com/kb/980368
尝试安装此KB为您的系统。如果您看到404这可能是因为你没有这个更新 - !,只是没有得到发现ISAPI模块,有没有很多可以做,如果没有这个
此外u能切换的程序池以<强>集成强>模式。日Thnx迈克尔·比安奇( https://stackoverflow.com/a/7956546/1143515 ),我只是想强调的是,
有关我上的天青服务器2012 R2 IIS 8.5 VM与一个Asp.Net MVC 5的应用程式(仓部署MVC 5)我不得不做从CMD提示升高以下,即使我有4.5已经安装:
dism /online /enable-feature /featurename:IIS-ASPNET45
来源: http://support.microsoft.com/kb/2736284
我还蛮力安装所有IIS具有以下的PowerShell特性:
import-module servermanager
add-windowsfeature web-server -includeallsubfeature
来源: HTTP:/ /www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2
现在我的应用程序的工作。
我们不得不转移到新服务器的MVC应用程序。 .NET 4和MVC 3安装,但我们仍然有“错误403.14“。在这种情况下,这意味着IIS不明白,它处理的是一个MVC应用程序,它一直在寻找的默认页。
的解决方案是简单的:HTTP重定向未安装在服务器上
服务器管理 - 角色 - Web服务器(IIS) - 角色服务 - HTTP重定向:未安装。安装,问题就解决了。
此外,如果您的应用程序已预编译,你应该有
PrecompiledApp.config
在您的应用程序的根目录下,否则你可以得到HTTP Error 403.14
为好。
另一种可能的解决办法,如果你走动的Global.asax的,请确认标记指向正确的MvcApplication类。希望这将节省别人的未来。
我曾用WebDeploy IIS扩展导入我的网站从IIS6到IIS7.5,所以所有的IIS设置是,正是因为他们已经在生产环境中。尝试所有在这里提供的解决方案,其中没有工作对我来说,我只是不得不改变应用程序池设置的网站,从古典到集成。
我突然遇到了同样的问题404.14。最后,问题已经得到了固定,取消选中“预编译同时发布了”在发布配置设置。
我改变了我的默认路由在一个点从:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
要:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index" }
这给了我你的错误。很高兴有人提到路由,因为我可能会一直在这永远的。
在我的情况下ASP.NET 4.5未安装在服务器上,从而安装ASP.NET 4.5固定的问题。
您可以通过运行CMD为管理解决这个错误 比
执行相同图像窗户32位
只是使在64位改变为framework64代替框架仅 不是去IIS和刷新页面结果 如果你仍然得到了在应用程序池中的某些错误改变选择项
我还有另一个问题导致了这个问题。
- 我已确保我的应用程序池在集成模式下运行 .net 4
- 我已经运行了 aspnet_regiis.exe -i
- 我已检查运行我的应用程序池的帐户的文件夹权限是否设置正确
这些方法都不起作用。事实证明,在 system.webserver > 模块下的 web.config 中,我有以下内容:
<remove name="WindowsAuthentication" />
显然,这删除了 Windows 身份验证模块,这似乎以某种方式使一切都失去了平衡。
我希望这对某人有帮助,因为这花了我一个晚上的时间!
添加针对此问题的另一解决方案。
在我的Global.asax.cs文件我已经从使用以下由MVC管道被消耗禁用尝试PHP文件:
routes.IgnoreRoute( "{*php}" );
我以前曾在MVC2项目做完这些,它工作得很好,但这样做在我的MVC 3应用程序引起的问题,上述报道。
还有一个原因,这可能发生 - 你RouteConfig.cs
或WebApiConfig.cs
无效
在我的情况下,我不得不定义为这样的路线(注意括号代替大括号):
...
routeTemplate: "api/(something}"
...
请注意为Windows 8用户需要添加/删除Windows组件,并删除.NET重启的版本,然后才能与IIS注册它重新安装。我相信这种情况,如果你得到.NET 4.5,从Visual Studio和安装IIS之后。
奇怪,因为它看起来可能, 重新安装IIS 的是什么工作对我来说,用下面的命令运行在.NET版本的文件夹中:
aspnet_regiis.exe /i
当我第一运行此命令,我开始获取HTTP错误403.14。但是,一旦我再次拼命地跑的命令,它解决了这个问题。
观测值:还有一件事我也做了删除HTTP重定向从服务器在服务器管理画面reiinstalling IIS之前功能。也许这也有解决问题的影响,但我不知道。所以,如果重新安装IIS仍不能正常工作,请尝试删除HTTP重定向,然后再试一次。希望它可以为你工作了。
要解决这个问题,而不必诉诸于32位模式,你将不得不更新源代码本项目
public static void RegisterUrlRoutesFromAttributes(RouteCollection routes)
{
// Enumerate assembly for UrlRoute attributes.
List<MapRouteParams> routeParams = new List<MapRouteParams>();
AppDomain.CurrentDomain.GetAssemblies()
.ToList()
.ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly)));
我提出这个问题,因为在IT云CodePlex项目的讨论板的讨论。
如果您在 Windows 8 或 Server 2012 上运行 IIS 8.5,您可能会发现在虚拟目录中运行 mvc 4/5 (.net 4.5) 不起作用。如果您在主机文件中创建一个本地主机条目以指向回本地计算机,然后将一个新的本地 IIS 网站指向该文件夹(具有匹配的主机标头条目),您会发现它可以正常工作。
我创建了一个新的命名空间(并因此夹)相同的控制器的路由(例如MvcApp/Test/SomeClasses.cs
和MvcApp/Controllers/TestController.cs
)。这也导致了403.14!
对于我来说,解决办法是添加NuGet包Microsoft.AspNet.WebPages(再加上它的剃刀和基础设施的依赖)到我的Web项目。
基础设施已经被强制地,因为它不加入作为在第一基准重新安装。
在我的情况下,.NET CRL版本的应用程序池prppertires设置为无托管代码(不知道为什么)。 将其设置为.NET CRL版v4.0.30319解决了这个问题。