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

IIS下ASP.NET Web Forms应用URL末尾斜杠及路由跳转问题咨询

ASP.NET Web Forms虚拟目录URL行为差异与重定向解决方案

一、两个应用URL表现不同的原因

  • EMR(无URL路由):未启用路由时,IIS默认对虚拟目录的无斜杠请求,会自动触发目录模块处理逻辑,补全末尾斜杠后返回响应,再配合表单认证的跳转流程,最终表现为自动加斜杠并返回预期页面。
  • EMRSSO(启用URL路由):路由模块UrlRoutingModule会优先接管所有请求,你配置的routes.MapPageRoute("Home", String.Empty, ...)仅匹配emrsso/(带斜杠)的根路径,但不带斜杠的emrsso请求没有对应的路由规则匹配。同时路由模块会阻止IIS默认的斜杠补全行为,导致请求无法被正确解析,既不会自动加斜杠,也无法跳转到预期页面。

二、实现重定向的解决方案

方法1:调整路由规则

修改路由注册代码,添加适配无斜杠请求的规则,或者直接通过路由触发重定向:

// 保留原路由
routes.MapPageRoute("Home", String.Empty, ConfigurationManager.AppSettings["HomePage"]);
// 添加匹配无斜杠根请求的路由,直接指向配置的首页
routes.MapPageRoute("HomeRoot", "", ConfigurationManager.AppSettings["HomePage"]);

如果需要强制重定向到带斜杠的路径,可以新增一个中间页面处理:

routes.MapPageRoute("RedirectRoot", "", "~/RedirectRoot.aspx");

然后在RedirectRoot.aspx的Page_Load中写重定向逻辑:

protected void Page_Load(object sender, EventArgs e)
{
    // 重定向到带斜杠的根路径
    Response.Redirect("~/", true);
    // 或者直接跳转到配置的首页
    // Response.Redirect(ConfigurationManager.AppSettings["HomePage"], true);
}

方法2:IIS URL重写规则

在EMRSSO应用的web.config中添加重写规则,直接将无斜杠的请求重定向到目标路径:

<system.webServer>
  <rewrite>
    <rules>
      <!-- 规则1:给EMRSSO添加末尾斜杠 -->
      <rule name="AddSlashToEMRSSO" stopProcessing="true">
        <match url="^emrsso$" />
        <action type="Redirect" url="emrsso/" redirectType="Permanent" />
      </rule>
      <!-- 规则2:直接重定向到配置的首页 -->
      <rule name="RedirectToEMRSSOHome" stopProcessing="true">
        <match url="^emrsso$" />
        <action type="Redirect" url="emrsso/<%$ AppSettings:HomePage %>" redirectType="Permanent" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

注:需要确保IIS已安装URL重写模块。

方法3:Global.asax事件处理

在Global.asax的Application_BeginRequest事件中检测请求路径,手动触发重定向:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    string requestPath = Request.Path.ToLower();
    if (requestPath == "/emrsso")
    {
        // 重定向到带斜杠的路径
        Response.Redirect("/emrsso/", true);
        // 或者直接跳转到配置的首页
        // string homePage = ConfigurationManager.AppSettings["HomePage"];
        // Response.Redirect($"/emrsso/{homePage}", true);
    }
}

内容的提问来源于stack exchange,提问作者Sup Ravi Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:52:58