.net 4.0 IIS 7.5上的ASP.NET MVC
我正在使用Visual Studio 2010 RC运行Windows 7 Ultimate(64位)。我最近决定让VS在IIS上运行/调试我的应用程序,而不是它附带的开发服务器 但是,每次我尝试运行MVC应用程序时,都会出现以下错误: HTTP错误403.14-禁止将Web服务器配置为不列出此目录的内容。详细的 错误信息 模块目录列表模块 通知ExecuteRequestHandler 处理程序静态文件错误 请求代码0x00000000 网址 物理的 路径C:\myProject\mySite\ 登录方法匿名登录 匿名用户 我在目录中放置了一个.net 4.0 IIS 7.5上的ASP.NET MVC,.net-4.0,iis-7.5,.net 4.0,Iis 7.5,我正在使用Visual Studio 2010 RC运行Windows 7 Ultimate(64位)。我最近决定让VS在IIS上运行/调试我的应用程序,而不是它附带的开发服务器 但是,每次我尝试运行MVC应用程序时,都会出现以下错误: HTTP错误403.14-禁止将Web服务器配置为不列出此目录的内容。详细的 错误信息 模块目录列表模块 通知ExecuteRequestHandler 处理程序静态文件错误 请求代码0x00000000 网址 物理的 路径C:\myProject\mySite
default.aspx
文件,收到以下错误:
HTTP错误500.21-内部服务器
错误处理程序
“PageHandlerFactory Integrated”具有
中的错误模块“ManagedPipelineHandler”
its模块列表
有没有其他我忘记采取的步骤来让它工作
注意:我在安装VS 2010 RC后安装了IIS 7.5。我使用了VisualStudio2010中MVC项目“属性”中“Web”选项卡下的内置“创建虚拟目录”按钮。我确保应用程序正在使用ASP.NET 4应用程序池
以下是我安装的IIS功能
ASP.NET 4未在IIS中注册。必须在命令行中运行以下命令/run 32位(x86)Windows %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet\u regiis.exe-ir 64位(x64)窗口 %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet\u regiis.exe-ir 大卫·默多克评论中的注释:
.net版本已更改 因为这个答案已经发布了。检查 该框架的哪个版本在中 %windir%\Microsoft.NET\Framework64 目录并更改命令 相应地,在运行之前(它是 目前为v4.0.30319)
要解决此问题而不必求助于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)));
公共静态无效注册表UrlRoutesFromAttributes(RouteCollection路由)
{
//枚举UrlRoute属性的程序集。
列表路径图=新列表();
AppDomain.CurrentDomain.GetAssemblys()
托利斯先生()
.ForEach(assembly=>routeParams.AddRange(GetRouteParamsFromAttribute(assembly));
我在IT cloud codeplex项目的讨论板上提出了这个问题
要确保您的web.config中有以下设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
可能出现此错误的另一个原因是,如果文件Global.asax不再位于根文件夹中。为此问题添加了另一个解决方案
在我的Global.asax.cs文件中,我使用以下命令禁止MVC管道使用尝试的php文件:
<remove name="WindowsAuthentication" />
routes.IgnoreRoute(“{*php}”);
我以前在MVC2项目中做过这些,效果很好,但在我的MVC 3应用程序中这样做会导致上面报告的问题。我也收到了这个错误,并发现“HTTP重定向”未在Windows Server中打开。这篇博文也指出了这一点:另一种可能的解决方案,如果您在global.asax中移动,请确保标记指向正确的MVCAPApplication类。希望这将在将来挽救一些人。我使用WebDeploy IIS扩展将我的网站从IIS6导入IIS7.5,因此所有的IIS设置都与生产环境中的设置完全相同。在尝试了这里提供的所有解决方案后,没有一个对我有效,我只需将网站的应用程序池设置从经典更改为集成。您还可以将应用程序池切换到集成模式。Thnx切换到密歇根州密歇根州ael Bianchi(),我只想强调这一点。亲爱的耶稣。我尝试了上述所有方法(但发现我的设置相同)。如果您遇到问题,还有另一种解决方案:
请尝试为您的系统安装此KB。如果您看到的是404,可能是因为您没有此更新,而且找不到isapi模块,没有此模块,您也无法进行很多操作!如果您的应用程序已预编译,您应该
PrecompiledApp.config
在你的应用程序的根文件夹中,否则你也会得到HTTP错误403.14。我有另一个问题导致了这个问题
- 我已确保我的应用程序池以集成模式运行.NET4
- 我已经运行了aspnet_regais.exe-I
- 我已检查运行我的应用程序池的帐户的文件夹权限设置是否正确
<remove name="WindowsAuthentication" />
显然,这删除了windows身份验证模块,它似乎以某种方式使一切都变得不正常
我希望这能帮助一些人,因为这花费了我一个晚上的大部分时间!我们将一个MVC应用程序移到了一个新服务器上..NET 4和MVC 3已经安装,但我们仍然收到“错误403.14”。在这种情况下,这意味着IIS不理解它正在处理一个MVC应用程序,它正在寻找默认页面 解决方案很简单:服务器上没有安装HTTP重定向
服务器管理器-角色-Web服务器(IIS)-角色服务-HTTP重定向:未安装。已安装,问题已解决。请确保您的Web.config中设置了以下内容:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
更好的解决方案:
尽管上述解决方案工作得非常好,但它可能会导致其他问题,因为它会在每个请求上运行所有已注册的HTTP模块(即使在.jpg.gif.css.html.pdf等的每个请求上),而且它是obv
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index" }
dism /online /enable-feature /featurename:IIS-ASPNET45
import-module servermanager
add-windowsfeature web-server -includeallsubfeature
aspnet_regiis.exe /i