我有自定义路线:
<Route("maintenance/test/{one}/{two}/{three}")>
Function Test(ByVal one As String, ByVal two As String, ByVal three As String) As JsonResult
Return Json(True, JsonRequestBehavior.AllowGet)
End Function
当我点击路线时,它按预期工作:
本地主机:1337 /维护/诊断/ 1/2/3
但是,如果任何参数包含句点,例如:
localhost:1337 / maintenance / test / 1 / 2./ 3 (注意2之后的时间段)
我收到404“资源无法找到”错误。
似乎IIS正在提取URL并尝试提供静态文件,而不是将其传递给MVC。
我尝试过的事情(无济于事):
runAllManagedModulesForAllRequests="true"
添加到web.config的<system.webServer><modules>
。 <add name="ApiURIs-ISAPI-Integrated-4.0"
path="/people/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
答案 0 :(得分:1)
我最初假设IIS将请求视为资源请求是不正确的。
事实证明,ASP.NET阻止对./
的URL的任何请求,就像它阻止传统保留字一样。
然后解决方案是启用relaxedUrlToFileSystemMapping
:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
来源: