.net 4.0 IIS 7.5上的ASP.NET MVC

.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

我正在使用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
  • 我已检查运行我的应用程序池的帐户的文件夹权限设置是否正确
所有这些都不起作用。事实证明,在system.webserver>modules下的web.config中,我有以下内容:

<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