This question already has answers here:
Dots in URL causes 404 with ASP.NET mvc and IIS
(18个回答)
已关闭6年。
我有以下路由配置:
以及以下 Controller 代码:
当我使用http://test.com/downloads/test.txt调用此 Action 时,我得到一个404。当我在文件名中不带点的情况下调用该 Action 时,它将起作用。如何使MVC将完整文件名传递给参数文件名?
(18个回答)
已关闭6年。
我有以下路由配置:
routes.MapRoute(
name: "Downloads",
url: "downloads/{filename}",
defaults: new { controller = "Downloads", action = "Index", filename = UrlParameter.Optional }
);
以及以下 Controller 代码:
public ActionResult Index(string filename)
{ ...
当我使用http://test.com/downloads/test.txt调用此 Action 时,我得到一个404。当我在文件名中不带点的情况下调用该 Action 时,它将起作用。如何使MVC将完整文件名传递给参数文件名?
最佳答案
发生这种情况的原因可能是,如果您的网址包含一个点,则II会将其作为“物理路径”网址而不是重写的网址来处理。
解决此问题的一种简便方法是为您自己的方案定义处理程序,例如:
<system.webServer>
<handlers>
<add name="ApiURIs-ISAPI-Integrated-4.0"
path="/downloads/*"
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
关于c# - 如何使MVC接受参数中的点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28433853/