在 ASP.NET C# 中重用自定义处理程序/控件的代码

本文关键字:程序 处理 控件 代码 自定义 NET ASP | 更新日期: 2023-09-27 18:35:28

我最近决定编写一个自定义 ASP.NET Web 控件来预览网站并将其显示为图像。 我在互联网上找到了各种方法,并从每种方法中取出了我最喜欢的部分。

Web 控件的第一个修订版运行良好,但预览不是异步生成的,因此由于加载时间的原因,控件的使用令人沮丧。 我编写了另一个代码修订版来生成不同请求中的预览(使用处理程序),这也运行良好。

我的第三个修订是编写一个使用该处理程序的自定义控件,以便我可以获得控件的便利性和处理程序的延迟加载。 这在它自己的项目中运作良好。 它变得复杂的地方是当我尝试在不同的网站项目中注册控件库项目中的处理程序时。

首先,我这样做的方式是否正确? 这似乎是一个好主意,直到我尝试注册处理程序。 使用控件非常简单。

其次,如果这是执行此操作的正确方法,如何注册此处理程序? 在 Web 应用程序 web.config 中,我尝试了各种风格的类名和命名空间,但当控件尝试从处理程序加载图像时,我总是得到 404。

以下是我现在要得到一个想法:

<add verb="GET" name="ThumbnailHandler" path="GenerateWebsitePreview.ashx" type="HandlerGenerateWebsitePreview, ThumbnailControl"/>

姓名:据我所知,这并不重要。 在我读过的任何文档中都不需要它,并且几乎从未提及过。路径:这是我想要调用处理程序的路径/URL。 这显然在 Web 应用程序项目中不存在,也不应该存在。 我希望它重用库中的那个。 使用处理程序,您可以使用所需的任何路径。类型:HandlerGenerateWebsitePreview 是实现 IHttpHandler 的类的名称。 缩略图控件是此类所在的命名空间。

Web 应用程序已具有对包含自定义控件和自定义处理程序的库项目的项目引用。 已知此引用有效,因为找到并呈现了自定义控件。

如果无法从其他项目注册处理程序,如何重用自定义处理程序? "add"标记中不允许使用"assembly"属性,就像注册自定义控件时一样。

提前感谢!

在 ASP.NET C# 中重用自定义处理程序/控件的代码

我应该再花几分钟时间尝试程序集名称、命名空间和类名。 我今天又试了一次,这种组合在其他没有其他地方起作用。

<add verb="GET" name="Name" path="path.path" type="Namespace.ClassName, AssemblyName"/>

我以为我已经尝试过这种组合,但显然我没有。