代码之家  ›  专栏  ›  技术社区  ›  Marek

ASP.NET MVC-如何修改请求的URL?

  •  0
  • Marek  · 技术社区  · 14 年前

    百度蜘蛛似乎在补充 ¤ 结束某些已爬网的URL(似乎最后一个字符是包含单个Unicode字符的URL)

    百度请求的网址如下:

    site.com/abc/ä¤

    虽然

    site.com/abc/ä 是从我的网站上的多个位置链接的有效URL。

    内部问题是,与此类URL匹配的路由不同,会发生未处理的异常。

    我不想因为站点上的500个错误而失去百度。

    我希望在开始任何ASP.NET MVC请求处理之前删除添加的字符,将请求的URL更改为其他URL。

    我可以在ASP.NET MVC中编写请求过滤器/HTTP模块或类似的模块来从URL中删除尾随的“_·”吗? 我不想改变我的路线来阻止这种行为。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chase Florell    14 年前

    我喜欢“在路线上修复它”的答案,但这里有一个选择(抱歉,它是在vb中)

    Public Class BaseController : Inherits System.Web.Mvc.Controller
        Protected Overrides Function CreateActionInvoker() As System.Web.Mvc.IActionInvoker
                If HttpContext.Request.RawUrl.EndsWith("¤") Then
                    Dim redir As String = Replace(HttpContext.Request.RawUrl, "¤", "")
                    Response.Redirect(redir)
                End If
        End Sub
    End Class
    

    然后从basecontroller继承所有控制器

    注意:string.replace不是“最佳”方法。如果尾随字符在普通URL中有效,您将希望以其他方式对其进行剪裁。

        2
  •  1
  •   ariel    14 年前

    我不确定,但可能会添加一个类似“控制器/动作/ID”的路由,字符在末尾

    此路线应先于当前使用的路线。