我正在创建一个自定义服务器控件,它将文件异步上传到服务器。此解决方案使用 Flash 元素将文件发布到通用 Web 处理程序(又名 ashx),然后将发布的文件保存在所需位置。
它工作得很好,但是通过这种方法,我确实需要在每个项目中创建 ashx 文件,可能会处理来自 flash 元素的帖子。
我想要实现的是完全封装的服务器控件,它将使用它自己的 ashx(或任何可以替换它的东西)处理程序来上传文件。
有可能吗?任何想法都会受到欢迎。
谢谢。
您可以在包含控件的类库中包含处理程序,然后仅使用以下<httpHandlers>
部分在 web.config 中注册它:
<configuration>
<system.web>
<httpHandlers>
<add verb="*"
path="upload.ashx"
type="MyControl.MyUploadHandler.New, MyControl" />
</httpHandlers>
<system.web>
</configuration>
如果您正在使用 IIS 7 集成管道模式到该<handlers>
部分:
<system.webServer>
<handlers>
<add name="UploadHandler"
verb="*"
path="upload.ashx"
type="MyControl.MyUploadHandler.New, MyControl" />
</handlers>
</system.webServer>
如果您使用的是 ASP.NET 4.0,您可以查看 PreApplicationStartMethod 基础结构,它允许您动态注册处理程序:
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyControl.StartUp), "PreApplicationStart")]