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)

小智 14
我有类似的问题.解决方案在属性中定义的根命名空间中.在我的代码中我没有命名空间,所以在这种情况下你需要使用
type="[namespace or root namespace].[your class name]"
Run Code Online (Sandbox Code Playgroud)