【问题标题】:Trailing dot in MVC 5 WebRequest URL causes 404MVC 5 WebRequest URL中的尾随点导致404
【发布时间】:2016-01-20 15:26:21
【问题描述】:

我正在运行 MVC 5 并有一个搜索 API,它会生成以下链接:/SearchedItem.?format=json 其中SearchedItem. 是用户对搜索的输入。由于dot 字符,这显然会导致著名的 404。我研究了以下所有解决方案:

Dot character '.' in MVC Web API 2 for request such as api/people/STAFF.45287

Dots in URL causes 404 with ASP.NET mvc and IIS

ApiController returns 404 when ID contains period

但是,添加斜线(/SearchedItem./?format=json/SearchedItem.?format=json/ 都试过)和 RAMMFAR 都不起作用。

寻找任何新的建议。

【问题讨论】:

    标签: asp.net-mvc api url http-status-code-404


    【解决方案1】:

    您必须更改您的 web.config,尾随的点让我们认为您正在访问图像。

    在 system.webServer/handlers (web.config) 中添加以下内容

    <add name="ApiURIs-ISAPI-Integrated-4.0"
     path="/api/*"
     verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
     type="System.Web.Handlers.TransferRequestHandler"
     preCondition="integratedMode,runtimeVersionv4.0" />
    

    另一个建议是将 RunAllManagedModulesForAllRequests 设置为 true,但我不建议这样做。然后所有静态资产都将通过.net代码处理:)

    我在您的问题中看到您检查了相关链接。但是你确定吗?因为我过去遇到过这种情况,以上是我的解决方案......

    【讨论】:

    • 我相信 MVC 5 是问题
    • MVC 5 是一个基于 Asp.Net 的框架......你还有更多的东西吗?
    • 我的问题中列出的解决方案在 MVC 5 下失败,人们在答案 cmets 内确认。
    • 您是否将您的项目从 MVC 4 更改为 MVC 5 并使用了在 asp.net/mvc/overview/releases/… 给出的演练?
    • 不,该项目最初是使用 MVC 5 编写的
    【解决方案2】:

    最合适的方法是在路由到 url 并在相应的操作中解码后进行编码,您可以使用 HttpUtility 执行编码和解码

    如果您不想编码和解码,请尝试按照 Here 的说明添加轻松的UrlToFileSystemMapping 配置

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      相关资源
      最近更新 更多