【问题标题】:ASHX handler with ASP.NET MVC 3 and Razor带有 ASP.NET MVC 3 和 Razor 的 ASHX 处理程序
【发布时间】:2011-11-09 11:34:51
【问题描述】:

我想在 ASP.NET MVC 3 中使用Silverlight Multi File Uploader。问题是我需要使用 ashx 处理程序来处理文件上传(处理程序是库的一部分)。如何将处理程序与 ASP.NET MVC 3 集成(我使用的是 Razor 视图引擎)?

【问题讨论】:

    标签: asp.net-mvc-3 ashx


    【解决方案1】:

    我的猜测是它更容易,因为它是(旧的?)第三方库的一部分,并且更容易按照告诉您在 web.config 中设置某些内容的说明进行操作。您应该能够通过忽略到*.ashx 文件的路由来忽略对*.ashx 的请求。你应该可以使用这样的东西,但我自己没有尝试过:

    routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
    

    【讨论】:

    • 这非常有效。谢谢!我需要做的就是将 ashx 文件添加到网站的根文件夹中,并将上面提到的行添加到 Global.asax 中,它就可以工作了! :D
    • @kubal5003 你是怎么做到的? web.config 中的 xml 是什么样的?
    【解决方案2】:

    问题是我需要使用 ashx 处理程序来处理文件上传

    谁告诉你需要一个处理程序?您可以在处理程序中执行的所有操作都可以在控制器操作中完成。如有必要,您甚至可以访问原始的 Request.InputStream

    【讨论】:

    • 即使在处理多个文件上传时,您也可以执行ActionResult Upload(IEnumerable<HttpPostedFileBase> files) + HTML 5 支持多个文件上传<input type="file" name="files" id="fileUpload" multiple="true" />
    • @Major Byte,这将取决于 Silverlight 控件是否发送 multipart/form-data 编码请求。如果没有,您将不得不手动解析它。
    • 如果有可以重复使用的东西,我为什么要编写新代码?这是您正在寻找的必备品。我不想编写自定义操作或结果类型或其他任何内容。我想重用现有的代码。
    • @kubal5003,如果您想重用现有代码,您需要与当前应用程序进行哪些集成?我个人会重新改编它。在具有控制器操作的 ASP.NET MVC 应用程序中使用原始 http 处理程序是违反良好做法的。根据您的要求以及您要达到的目标,按原样使用处理程序或多或少会有些困难。
    • 我同意创建自定义控制器通常是首选方式,但我现在没有时间处理这个问题。带有原始处理程序的解决方案效果很好,并且可能会更快一些,因为 ASP.NET MVC 本身就是一个处理程序(差异可能可以忽略不计,这不是我的目标)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 2011-11-16
    • 2014-03-15
    • 2010-10-12
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多