删除尾随斜杠 - 不使用IIS重写ASP.net

Ada*_*dam 2 c# asp.net routes

如何在不使用IIS重写模块的情况下删除尾部斜杠?

我假设我可以在global.asax.cs文件中添加一些RegisterRoutes函数?

Ada*_*dam 5

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        // Do Not Allow URL to end in trailing slash
        string url = HttpContext.Current.Request.Url.AbsolutePath;
        if (string.IsNullOrEmpty(url)) return;

        string lastChar = url[url.Length-1].ToString();
        if (lastChar == "/" || lastChar == "\\")
        {
            url = url.Substring(0, url.Length - 1);
            Response.Clear();
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", url);
            Response.End();
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果你在localhost中测试,请确保使用if(string.IsNullOrEmpty(url)|| url.Length == 1)return; 这是因为第一个网址只是"/" (2认同)