MVC项目故障求助:IIS Express下页面被下载而非打开
解决VS2017 MVC项目在IIS Express下触发文件下载的问题
刚看到你遇到的这个情况——启动MVC项目后首页和所有链接都触发下载login.aspx之类的文件,而不是正常渲染页面,我之前帮同事排查过几乎一模一样的问题,大概率是IIS Express的ASP.NET请求处理配置出了问题,下面给你几个针对性的解决步骤:
1. 检查IIS Express应用程序池模式
IIS Express的应用程序池如果用了经典模式,会导致ASP.NET的集成管道无法正常处理MVC路由和Web Forms页面请求,直接把文件当成静态资源下载:
- 右键点击VS工具栏的IIS Express图标(运行项目后才会出现),选择“显示所有应用程序池”
- 找到你的项目对应的应用程序池,确认它的模式是集成而不是经典。如果是经典模式,改成集成模式后重启项目试试。
2. 重新注册ASP.NET到IIS Express
有时候ASP.NET的处理程序没有正确注册到IIS Express,导致它不知道该用ASP.NET引擎解析.aspx文件:
- 以管理员身份打开命令提示符(CMD)
- 运行对应.NET版本的注册命令:
如果你的项目用的是.NET Framework 4.x,执行:
要是是64位系统,也可以试试Framework64下的版本:%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i - 执行完成后重启VS和IIS Express,再启动项目测试。
3. 修复Web.config中的处理程序映射
如果项目的Web.config里缺失了ASP.NET页面的处理程序配置,IIS也会直接返回文件:
- 打开项目根目录的
Web.config,找到<system.webServer>节点下的<handlers>部分 - 确认里面包含针对
.aspx文件的处理程序配置,要是没有,添加这段:<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" modules="ManagedPipelineHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> - 保存Web.config后,清理项目(菜单→生成→清理解决方案),再重新生成启动。
4. 重置IIS Express的配置文件
如果上面的方法都没用,可能是IIS Express的全局配置文件损坏了:
- 关闭VS和所有IIS Express进程(任务管理器里找
iisexpress.exe杀掉) - 找到
C:\Users\[你的用户名]\Documents\IISExpress\config目录,把applicationhost.config文件备份一份,然后删除原文件 - 重新打开VS,加载你的项目并启动,VS会自动生成新的默认配置文件,这时候再测试页面是否正常。
另外,也可以快速检查下项目的Web属性设置:右键项目→属性→Web,确认“启动操作”是“当前页”或者指定的MVC路由(比如~/Home/Index),不过这个一般不会导致所有链接都下载,但也可以排除下。
内容的提问来源于stack exchange,提问作者FrenkyB
相关产品推荐
相关产品推荐

