Visual Studio 2015中IIS Express移除文件扩展名致404错误求助
我之前开发.NET Framework项目时也碰到过一模一样的情况,给你几个实用的排查和解决步骤,应该能帮你搞定:
检查项目启动页设置
右键你的Web项目 → 选择「属性」→ 切换到「Web」选项卡,看看「启动操作」里的「特定页」是不是填成了default而不是default.aspx。如果是,直接改成带.aspx后缀的路径就行,这样调试时就会直接打开正确的URL。确认web.config里的默认文档配置
打开项目根目录的web.config,检查system.webServer下的defaultDocument节点,确保default.aspx在默认文档列表的最前面,配置示例如下:<system.webServer> <defaultDocument enabled="true"> <files> <clear /> <add value="default.aspx" /> <add value="index.aspx" /> <add value="default.htm" /> </files> </defaultDocument> </system.webServer>这样IIS Express会优先查找带
.aspx后缀的默认页。排查IIS Express的全局配置文件
找到IIS Express的全局配置文件applicationhost.config,路径一般是C:\Users\[你的用户名]\Documents\IISExpress\config\applicationhost.config。打开后搜索你的项目名称对应的站点配置,检查defaultDocument节点是否包含default.aspx,同时看看有没有意外添加的URL重写规则把扩展名去掉了。如果有可疑的重写规则,可以暂时注释掉再测试。检查项目中的URL重写规则
如果你项目里用了URL重写模块,看看是不是有规则自动移除了.aspx扩展名。比如类似下面的规则就会导致调试时跳转成无扩展名的URL:<rule name="Remove ASPX Extension" stopProcessing="true"> <match url="^(.*)\.aspx$" /> <action type="Redirect" url="{R:1}" /> </rule>你可以给这个规则加个条件,只在发布环境生效,比如:
<rule name="Remove ASPX Extension" stopProcessing="true"> <match url="^(.*)\.aspx$" /> <conditions> <add input="{ASPNET_ENV}" pattern="Production" /> </conditions> <action type="Redirect" url="{R:1}" /> </rule>或者调试时直接注释掉这个规则,验证问题是否解决。
重置IIS Express配置
如果上面的方法都没效果,可以试试彻底重置IIS Express:关闭所有Visual Studio实例,删除C:\Users\[你的用户名]\Documents\IISExpress文件夹,然后重新打开项目启动调试,VS会自动重新生成干净的IIS Express配置文件。
内容的提问来源于stack exchange,提问作者regisls

