【问题标题】:Allowing a filename as aController Action [closed]允许文件名作为控制器操作 [关闭]
【发布时间】:2016-12-12 13:38:20
【问题描述】:

谁可以使用一个特定的文件名(id:myfile.gif)作为控制器操作?路由定义呢。

TIA,/路易斯

【问题讨论】:

  • 你到底在问什么?我投票决定关闭它,因为我发现您的要求不清楚。
  • 你想做什么?所有的静态文件请求通常都会由 IIS 处理。
  • 如果你把文件放在你的 MVC 项目中,那么它已经可以访问了。例如。如果你把它放在文件夹Content -> http://server/Content/myfile.gif。如果该文件不在您的项目中,那么@Douglas Gandini 的回答可能会有所帮助。

标签: c# .net asp.net-mvc


【解决方案1】:

我的回答是基于“如何在控制器/动作中处理/映射静态文件”。

  • 创建一个操作来处​​理您的请求
  • 创建指向您的操作的新路线
  • 在 web.config 中配置一个新的处理程序,告诉 IIS 将请求传递给托管代码

行动:

[HttpGet]
public FileContentResult Index(string FileName) {
var content = ... // your file content retrieve logic
return File(content, "image/gif");
}

路线图:

routes.MapRoute(
    name: "Image",
    url: "SomePath/{filename}.gif",
    defaults: new { controller = "Image", action = "Index" }
        );

处理程序:

<system.webServer>
    <handlers>
        <add name="Giffiles" path="*.gif" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
</system.webServer>

【讨论】:

  • 完美运行。 ...现在我可以跟踪我想要的任何东西:发送和打开的电子邮件、twitter、linkedin、facebook 帖子......任何东西:D
猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 2020-02-16
  • 2012-06-11
  • 2011-12-01
  • 1970-01-01
  • 2017-04-17
相关资源
最近更新 更多