我正在运行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
。
寻找任何新建议。
答案 0 :(得分: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代码处理,然后:)
我在您的问题中看到您检查了相关链接。但你确定吗?因为我过去和以上都是我的解决方案......
答案 1 :(得分:0)
最合适的方法是在路由到url后进行编码并在相应的操作中解码,您可以使用HttpUtility执行编码和解码
如果您不想编码和解码,请尝试添加relaxedUrlToFileSystemMapping配置,如解释Here