【问题标题】:I can't find the place and application that removes the slashes from URL in ASP.NET MVC application我在 ASP.NET MVC 应用程序中找不到从 URL 中删除斜杠的位置和应用程序
【发布时间】:2020-11-09 15:41:05
【问题描述】:

我想从 URL 中删除多个斜杠,以便在有人搜索时:

site.com///Home///Index// 永久重定向到 site.com/Home/Index/ 或至少给出 404。

我尝试从 IIS 中创建一些重写规则甚至阻止规则: rule 一段时间后我发现问题出在请求触及 IIS 之前,因为在 IIS 中,URL 没有多个斜杠。

我还尝试创建一个新项目,并且使用 IIS Express 我遇到了同样的问题,如果我检查进入我的应用程序的 URL,请求如下:http://localhost:55158///Home// /Index ,我进入我的应用程序:/Home/Index on begin request,但如果我签入 Fiddler,请求是:fiddler request

我可以做些什么来删除不必要的斜线?

【问题讨论】:

    标签: c# asp.net url iis model-view-controller


    【解决方案1】:

    我认为问题出在 asp.net mvc 中的 RouteConfig 。

    routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
    

    我认为这将解决问题,或者如果您有任何问题,请告诉我。

    【讨论】:

    • 问题不在网络应用程序中,而是在 IIS 中,因为多个斜杠在应用程序中不再可见,因为在 IIS Web 服务器中已删除(这是请求的第一点映射)
    【解决方案2】:

    据我所知,无论您在地址栏中输入多少个“/”,网络浏览器和提琴手都只会将单个“/”发送到 IIS 端。所以你不需要使用重写规则来删除“/”。

    【讨论】:

      【解决方案3】:

      我的怀疑是,因为它是 URL 分层部分的一部分,所以它会自动将双斜杠转换为单斜杠,因为 URL 的该部分不允许使用双斜杠。由于 URL 包含在 URL 的分层部分中不允许出现的字符,因此最好将其指定(适当编码)作为查询字符串的一部分(如果是 GET 请求)或在表单参数中(对于 POST)。

      http://localhost:37779/api/get/?url=http:%2F%2Fwww.mysite.com

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 2012-07-04
        • 2022-09-28
        • 2011-03-05
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多