ASP.NET中无.aspx扩展名跳转本地IIS报404问题求助
解决无.aspx扩展名ASP页面本地IIS 404问题
针对你遇到的无扩展名ASP页面跳转本地404、服务器正常的情况,核心原因是本地IIS没有配置对无扩展名请求的处理规则,以下是几种可行的解决方法,优先推荐第一种(和服务器配置匹配度最高):
方法一:配置URL重写规则(推荐)
服务器大概率是用了URL重写来映射无扩展名请求到.aspx页面,步骤如下:
- 确认本地IIS已安装URL重写模块:打开IIS管理器,左侧菜单如果没有“URL重写”,就通过“管理工具”里的“Web平台安装程序”搜索并安装该模块。
- 在项目根目录的
web.config中添加重写规则:
<system.webServer> <rewrite> <rules> <rule name="Map No-Extension to ASPX" stopProcessing="true"> <match url="^([^.]+)$" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="{R:1}.aspx" /> </rule> </rules> </rewrite> </system.webServer>
这个规则会把所有非文件、非目录的无扩展名请求,自动重写为带.aspx的路径(比如./CPersonalRegister会被映射到./CPersonalRegister.aspx)。
方法二:添加ASP.NET无扩展名处理程序映射
如果服务器用的是扩展名映射而非重写,可以这么配置:
- 打开IIS管理器,选中你的站点,进入“处理程序映射”。
- 点击右侧“添加脚本映射”:
- 请求路径填
* - 可执行文件选择.NET Framework 4.0对应的
aspnet_isapi.dll,路径一般是C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll(64位系统选Framework64目录下的) - 名称随便填,比如“ASP.NET无扩展名映射”
- 勾选“允许执行脚本”后确认。
注意:这种方式会让所有无扩展名请求都走ASP.NET处理,可能干扰静态文件(如图片、CSS)的访问,不如重写灵活。
- 请求路径填
方法三:配置ASP.NET路由
如果项目本身使用了ASP.NET路由,可在Global.asax的Application_Start方法中添加路由规则:
void Application_Start(object sender, EventArgs e) { // 映射无扩展名页面到对应的.aspx文件 RouteTable.Routes.MapPageRoute( "NoExtensionPageRoute", "{pageName}", "~/ {pageName}.aspx" ); }
这种方式适合项目本身依赖路由机制的场景,访问CPersonalRegister时会自动匹配到CPersonalRegister.aspx。
额外注意事项
- 确保本地IIS应用程序池的.NET Framework版本设置为4.0,且托管模式(集成/经典)和服务器保持一致。
- 最稳妥的方式是直接查看服务器上的
web.config和IIS配置,把对应的规则拷贝到本地,完全对齐服务器环境。
内容的提问来源于stack exchange,提问作者Eugenio Escobar
相关产品推荐
相关产品推荐

