IIS 7.5上的ASP.NET MVC

Oma*_*mar 336 .net-4.0 iis-7.5

我使用Visual Studio 2010 RC运行Windows 7旗舰版(64位).我最近决定让VS在IIS上运行/调试我的应用程序而不是随附的开发服务器.

但是,每次我尝试运行MVC应用程序时,都会收到以下错误:

HTTP错误403.14 - 禁止Web服务器配置为不列出此目录的内容.详细

错误信息

模块DirectoryListingModule

通知ExecuteRequestHandler

处理程序StaticFile错误

代码0x00000000请求

URL http:// localhost:80/mySite /

物理路径C:\ myProject\mySite \

登录方法匿名登录

用户匿名

default.aspx在目录中放置了一个文件,我收到以下错误:

HTTP错误500.21 - 内部服务器错误处理程序"PageHandlerFactory-Integrated"在其模块列表中有一个错误的模块"ManagedPipelineHandler"

有没有其他步骤我忘了采取这个工作?

注意:我在安装VS 2010 RC后安装了IIS 7.5.我使用了Visual Studio 2010中MVC项目的"属性"中"Web"选项卡下的内置"创建虚拟目录"按钮.我确保该应用程序使用的是ASP.NET 4应用程序池.

以下是我所拥有的IIS的已安装功能.

替代文字

Oma*_*mar 498

ASP.NET 4未在IIS中注册.必须在命令行/运行中运行以下命令

32位(x86)Windows

%windir%\ Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir

64位(x64)Windows

%windir%\ Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

David Murdoch的评论:

自发布此答案以来,.net版本已发生变化.检查%windir%\ Microsoft.NET\Framework64目录中的框架版本,并在运行之前相应地更改命令(目前为v4.0.30319)

  • 自发布此答案以来,.net版本已发生变化.__检查框架的哪个版本位于`%windir%\ Microsoft.NET\Framework64`目录中并在运行之前相应地更改命令(目前是v4.0.30319).__ (14认同)
  • 这在IIS8 btw中不起作用,如果您尝试"此版本的操作系统不支持此选项.管理员应使用"打开/关闭Windows功能"来安装/卸载带有IIS8的ASP.NET 4.5对话框,服务器管理器管理工具或dism.exe命令行工具.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=216771." (11认同)
  • **注意64位Windows的Framework64**中的"64"!那个位于*ss的我.我必须安装32位verion 4或5次,没有任何效果. (9认同)
  • 谢谢!!!我一直在打扰这个,最后意识到我的问题:) (6认同)
  • 如果.net framework文件夹中缺少aspnet_regiis.exe命令,请下载完整的.net框架安装程序http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17851 (3认同)

Mar*_*tuc 199

确保您拥有的另一件事是web.config中的以下设置:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 这样做对我来说.谢谢 (23认同)
  • 尝试通过添加路由模块来避免这种情况:http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html (10认同)
  • 如果您不想设置`runAllManagedModulesForAllRequests`(甚至运行静态文件),您可以安装Microsoft修补程序:http://www.microsoft.com/download/en/details.aspx?displaylang = en&id = 5272. (8认同)
  • 也为我解决了它.奇怪的是它在没有该设置的VS2010 IIS Express中本地工作. (5认同)

Pre*_*ngh 77

确保web.config中包含以下内容:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

更好的方案:

尽管上面的解决方案工作得非常好,但它可能会导致其他问题,因为它会在每个请求上运行所有已注册的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>
Run Code Online (Sandbox Code Playgroud)

确保preCondition属性为空意味着它将在所有请求上运行.[阅读更多](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html,"阅读原帖")

  • 这修复了根目录上的403.14,以及我的MVC应用程序的其他控制器方法上的404.但是,这里还有一些可疑的东西,因为我在同一台服务器上运行了另一个具有相同可见网站设置的应用程序,并且它没有此设置.这是由VS 2012提供的SPA项目模板创建的web.config,在我的盒子上工作正常但在发布时没有. (6认同)
  • 是的,所以我的开发设备在`Windows\Microsoft.NET\Framework64中包含`<system.web> <httpModules> <add name ="UrlRoutingModule-4.0"type ="System.Web.Routing.UrlRoutingModule"/>`\v4.0.30319\Config\web.config`并且看起来已经在我的VS 2012安装日期进行了修改.那么,下一个问题是,我的其他项目中允许它运行的是什么? (4认同)

Zip*_*pyV 42

有人可能会收到此错误的另一个原因是文件Global.asax不再位于根文件夹中.

  • 是的 - 我写的安装程序没有带来这个文件.谢谢! (4认同)
  • 这也是我的问题.我永远不会根据我的应用程序错过Global.asax的403症状猜测 (4认同)
  • 还修复了它:在发布选项中关闭预编译(`global.asax`只受文件影响). (3认同)

tod*_*tta 20

我也收到此错误,并发现Windows Server中未启用"HTTP重定向".这篇博文也指出了这一点:http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx

  • 在它可能存在的所有该死的东西中,就是这样.我到处寻找,玩了几个小时的安全设置,aspnet_regiis,等等.在脆的kaiser卷的甜小耶稣. (6认同)

Sea*_*son 15

甜蜜的耶稣.我尝试了以上所有的东西(但发现我的设置相同).如果您遇到问题,请再解决一下问题:

http://support.microsoft.com/kb/980368

尝试为您的系统安装此KB.如果你看到404,那可能是因为你没有这个更新 - 而isapi模块就是没有找到,如果没有这个,你就无法做到这一点!


小智 7

您也可以将AppPool切换到集成模式.Thnx对Michael Bianchi(/sf/answers/556958251/),我只想强调一下.


Jon*_*agh 7

对于使用Asp.Net MVC 5应用程序的Azure Server 2012 R2 IIS 8.5 VM(bin部署MVC 5),我必须从提升的cmd提示符执行以下操作,即使我已经安装了4.5:

dism /online /enable-feature /featurename:IIS-ASPNET45
Run Code Online (Sandbox Code Playgroud)

资料来源:http://support.microsoft.com/kb/2736284

我还通过以下PowerShell强制安装了所有IIS功能:

import-module servermanager
add-windowsfeature web-server -includeallsubfeature
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2

现在我的应用程序正在运行


小智 6

我们将MVC应用程序移动到新服务器.安装了.NET 4和MVC 3,但我们仍然得到"错误403.14".在这种情况下,这意味着IIS不理解它正在处理MVC应用程序,它正在寻找默认页面.

解决方案很简单:服务器上未安装HTTP重定向.

服务器管理器 - 角色 - Web服务器(IIS) - 角色服务 - HTTP重定向:未安装.安装好了,问题解决了.


pva*_*sek 5

此外,如果你的应用程序是预编译的,你应该有

PrecompiledApp.config

在你的应用程序的根文件夹中,否则你也可以得到HTTP Error 403.14.