You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2015中IIS Express移除文件扩展名致404错误求助

解决VS2015调试时IIS Express自动移除.aspx扩展名导致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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:54:54