如果一个不存在,则在应用程序路径上添加尾部斜杠,在IIS上运行C#app

时间:2016-11-17 10:03:04

标签: c# asp.net iis

我知道这可以通过URL Rewrite来完成,但这是一台客户机器,除非他们真的需要,否则他们不想安装扩展。该应用程序在原始域名下的文件夹中运行,如下所示:

domain.com/app1

如果向domain.com/app1发出请求,我将永久重定向到domain.com/app1/

应用程序和IIS:

  • .NET Framework 4.5
  • IIS 7.0

最后的示例规则:

<rule name="Add trailing slash" stopProcessing="true">
  <match url="(.*[^/])$" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Redirect" redirectType="Permanent" url="{R:1}/" />
</rule>

1 个答案:

答案 0 :(得分:2)

使用此方法在Global.asax中解决了该问题:

protected void Application_BeginRequest()
{
    if (Request.ApplicationPath != "/" && Request.ApplicationPath.Equals(Request.Path, StringComparison.CurrentCultureIgnoreCase))
    {
        var redirectUrl = VirtualPathUtility.AppendTrailingSlash(Request.ApplicationPath);
        Response.RedirectPermanent(redirectUrl);
    }
}