我正在开发一个ASP .Net网站。 我创建了一个自定义HTTP处理程序来响应使用.videoImage扩展名来获取资源的请求 以下是与我的处理程序对应的文件的第一行:
<%@ WebHandler Language="C#" Class="CompleteSubtitles.VideoImage" %>
using System;
using System.Web;
using System.IO;
using SubtitleSounds.DataManagement;
namespace CompleteSubtitles
{
public class VideoImage : IHttpHandler
{
...
}
}
处理程序文件位于网站根文件夹的子文件夹中 我在我的网站root web.config文件中配置了我的处理程序,如下所示:
<configuration>
<system.web>
...
<httpHandlers>
<add verb="*" path="*.videoImage" type="CompleteSubtitles.VideoImage" />
</httpHandlers>
</system.web>
</configuration>
我在加载页面时收到ASP .Net错误消息,告知我CompleteSubtitles.VideoImage类型的加载失败。
有谁知道为什么?
任何帮助将不胜感激。
答案 0 :(得分:1)
确认我无法确定的确切错误消息,但根据我对处理程序和Web窗体的经验,这可行:
您的处理程序不能是简单的VB / CS文件,即使您将其放在APP_CODE文件夹上(从未与我合作过)。您需要放置在DLL中,我总是使用单独的类库。
如果主机使用IIS 7, system.web / httpHandlers 不起作用,则需要添加 system.webServer 。我保留两个以防万一。这是一个示例(bNet.Ferramentas是我的DLL文件):
&GT;
<system.web>
<httpHandlers>
<add verb="*" path="sitemap.ashx" type="bNet.Ferramentas.SiteMapHandler, bNet.Ferramentas" />
</httpHandlers>
</system.web >
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add verb="*" name="bnetSitemap" path="sitemap.ashx" type="bNet.Ferramentas.SiteMapHandler, bNet.Ferramentas"/>
</handlers>
</system.webServer>
答案 1 :(得分:1)
你必须指定类的全名(HttpHanlder),如下所示:
<configuration>
<system.webServer>
<handlers>
<add verb="*" path="*.sample" name="HelloWorldHandler" type="HelloWorldHandler"/>
</handlers>
</system.webServer>
</configuration>
了解更多click here
希望它会有所帮助。
答案 2 :(得分:0)
以下是我解决问题的方法:
我在App_Code文件夹中创建了一个代表我的处理程序的类
我的处理程序文件的扩展名是“.cs”而不是“.ashx”
我在web.config中声明我的处理程序是:
<httpHandlers>
<add verb="*" path="*.videoImage" type="CompleteSubtitles.VideoImageHandler" />
</httpHandlers>