我使用Visual Studio 2010 RC运行Windows 7 Ultimate(64位)。我最近决定让VS在IIS上运行/调试我的应用程序,而不是在附带的开发服务器上。
然而,每次我尝试运行MVC应用程序,我得到以下错误:
HTTP错误403.14 -禁止Web服务器被配置为不列出此目录的内容。详细的
错误信息
模块DirectoryListingModule
通知ExecuteRequestHandler
汉德勒统计错误
代码0x00000000请求
URL http://localhost: 80 / mySite /
物理
路径C: \ myProject \ mySite \
登录方法匿名登录
匿名用户
我设置了一个默认值。aspx文件在目录中,我收到以下错误:
HTTP错误500.21 -内部服务器
错误处理程序
"PageHandlerFactory-Integrated"有一个
坏模块“ManagedPipelineHandler”在
其模块列表
还有其他我忘了做的步骤吗?
注意:我在安装VS 2010 RC之后安装了iis7.5。在Visual Studio 2010中,我使用了MVC项目的“属性”中“Web”选项卡下的内置“创建虚拟目录”按钮。我确保应用程序使用的是ASP。NET 4应用程序池。
下面是我已经安装的IIS特性。
要解决这个问题,而不必诉诸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项目的讨论板上提出了这个问题。
http://itcloud.codeplex.com/discussions/262000
我还有另一个问题导致了这个问题。
我已经确保我的应用程序池在集成模式下运行。net 4
我已经运行了aspnet_regiis.exe -i
我已经检查文件夹权限设置正确的帐户运行我的应用程序池
这些都没用。原来在我的网里。在系统下配置。webserver >模块我有以下:
<remove name="WindowsAuthentication" />
显然,这删除了windows身份验证模块,似乎以某种方式破坏了一切。
我希望这能帮助到一些人,因为这花了我一个晚上的时间!
确保你的web.config中有以下设置:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
更好的解决方案:
尽管上述解决方案绝对有效,但它可能会导致其他问题,因为它会在每个请求上运行所有注册的HTTP模块(甚至在.jpg .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,“阅读原文”)
我一度改变了我的默认路线:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
To:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index" }
这就给出了你的误差。很高兴有人提到了路由,因为我可能永远都在这上面。
对于我来说,在Azure Server 2012 R2 IIS 8.5虚拟机上使用Asp。Net MVC 5应用程序(bin部署MVC 5)我必须从一个提升cmd提示符做以下工作,即使我已经安装了4.5:
dism /online /enable-feature /featurename:IIS-ASPNET45
来源:http://support.microsoft.com/kb/2736284
我还使用以下PowerShell强行安装了所有IIS功能:
import-module servermanager
add-windowsfeature web-server -includeallsubfeature
来源:http://www.iis.net/learn/install/installing - iis 85/installing iis - 85 - windows server 2012 r2
现在我的应用程序正在工作。