自定义HttpHandler错误:无法加载类型'FileProtectionHandler'

JBo*_*oom 4 vb.net asp.net web-config httphandler asp.net-4.0

我正在尝试实现一个自定义HttpHandler(第一次),我已经得到了一个教程,但无法让它工作.然后我找到了另一个教程,但无法让它工作,他们都给了我相同的错误信息.

自定义处理程序是为了保护人们不要下载某些文件类型,虽然我认为错误是一些配置问题,因为一旦我将httpHandlers添加到Web.Config文件,我就无法使网站工作.

    Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load type 'FileProtectionHandler'.

Source Error:

Line 47:         </compilation>
Line 48:         <httpHandlers>
Line 49:             <add verb="*" path="*.pdf" type="FileProtectionHandler"/>
Line 50:         </httpHandlers>
Run Code Online (Sandbox Code Playgroud)

如果您需要更多代码,请告诉我们.

谢谢你的帮助.J.

    <%@ WebHandler Language="VB" Class="FileProtectionHandler" %>

Imports System
Imports System.Web
Imports System.Web.Security
Imports System.IO
Imports System.Web.SessionState

Public Class FileProtectionHandler : Implements IHttpHandler

    Private Function SendContentTypeAndFile(ByVal context As HttpContext, ByVal strFile As [String]) As HttpContext
        context.Response.ContentType = GetContentType(strFile)
        context.Response.TransmitFile(strFile)
        context.Response.[End]()
        Return context
    End Function

    Private Function GetContentType(ByVal filename As String) As String
        ' used to set the encoding for the reponse stream
        Dim res As String = Nothing
        Dim fileinfo As New FileInfo(filename)

        If fileinfo.Exists Then
            Select Case fileinfo.Extension.Remove(0, 1).ToLower()
                Case "pdf"
                    If True Then
                        res = "application/pdf"
                        Exit Select
                    End If
            End Select

            Return res
        End If

        Return Nothing
    End Function

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Response.ContentType = "text/plain"
        context.Response.Write("Hello World")
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class
Run Code Online (Sandbox Code Playgroud)

物业页面Img

小智 14

我有类似的问题.解决方案在属性中定义的根命名空间中.在我的代码中我没有命名空间,所以在这种情况下你需要使用

type="[namespace or root namespace].[your class name]"
Run Code Online (Sandbox Code Playgroud)