首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在aspx页上的引用,ashx页导致报表查看器声明中的错误。

在aspx页上的引用,ashx页导致报表查看器声明中的错误。
EN

Stack Overflow用户
提问于 2014-10-04 19:02:02
回答 1查看 827关注 0票数 0

我使用VB.NET构建了一个网站,我添加了一个名为reports.aspx的文件来处理一些报告。具体来说,它使用将报表从SSRS保存到PDF,然后重定向到一个名为reports.ashx的处理程序文件,该文件实际上处理打印。

reports.aspx代码

代码语言:javascript
复制
<%@ Page Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="Microsoft.Reporting.WebForms" %>
<%-- Register the WebClientPrint script code --%>
 <%=Neodynamic.SDK.Web.WebClientPrint.CreateScript(MyUtils.GetWebsiteRoot() + "reports.ashx")%>

<!DOCTYPE html>

<script language="VB" runat="server">
Private Sub Page_Load(sender As Object, e As EventArgs)

    Dim reportname As String
    Dim paramBlock As New ReportParameter()
    Dim paramID As New ReportParameter()

    reportname = Request("reportname")
    Dim v As New ReportViewer
    v.ProcessingMode = ProcessingMode.Remote
    Dim serverreport As New ServerReport
    serverreport = v.ServerReport
    serverreport.ReportServerUrl = New Uri("http://websql1.core.com/Reports")
    serverreport.ReportPath = "/Reports/Aramid/Sheeter/" & reportname

    Select Case reportname

    Case Is = "NomexBlockCard" Or "NomexBlockLabel" Or "NomexInternalLabel"
        paramBlock.Name = "paramBlock"
        paramBlock.Values.Add(Request("paramBlock"))
        Dim parameters() As ReportParameter = {paramBlock}
    Case Is = "NomexRoutingData"
        paramID.Name = "paramID"
        paramID.Values.Add(Convert.ToInt32(Request("paramID")))
        Dim parameters() As ReportParameter = {paramID}
    End Select

    serverreport.SetParameters(parameters)

    Save(serverreport, "~/Files/")

    'now print
    Response.Redirect("reports.ashx?fileName=" & reportname)

End Sub

Public Sub Save(ByVal sr As ServerReport, ByVal savePath As String)
    Dim Bytes() As Byte = sr.Render("PDF", "", Nothing, Nothing, Nothing, Nothing, Nothing)
    Using Stream As New FileStream(savePath, FileMode.Create)
        Stream.Write(Bytes, 0, Bytes.Length)
    End Using
End Sub


</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>

</body>
</html>

reports.ashx代码

代码语言:javascript
复制
<%@ WebHandler Language="VB" Class="reports" %>

Imports System
Imports System.Web
Imports Neodynamic.SDK.Web

Public Class reports : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    Dim useDefaultPrinter As Boolean = True '(context.Request("useDefaultPrinter") = "checked")
    Dim printerName As String = context.Server.UrlDecode(context.Request("printerName"))

    Dim fileName As String = context.Server.UrlDecode(context.Request("fileName"))
    Dim filePath As String = "~/Files/"

    If (filePath <> Nothing) Then

        Dim file As New PrintFile(context.Server.MapPath(filePath), fileName)
        Dim cpj As New ClientPrintJob()
        cpj.PrintFile = file
        If (useDefaultPrinter OrElse printerName = "null") Then
            cpj.ClientPrinter = New DefaultPrinter()
        Else
            cpj.ClientPrinter = New InstalledPrinter(printerName)
        End If
        cpj.SendToClient(context.Response)

    End If

End Sub

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

End Class

打开Visual以生成和发布时,会得到以下错误。

“从模块system.web.httpcontextbase程序集导入system.web类型失败”

当我查看reports.aspx中的代码时,行下出现了一个错误

代码语言:javascript
复制
Dim v as New ReportViewer

错误更正选项指出,“需要引用System.Web.Extensions版本= 3.5.0.0,.包含已实现的接口System.Web.UI.IScriptControl。

我指的是System.Web、System.Web.Extensions和System.Web.Abstractions。

靶向.NET 4

请帮助我理解这个问题或需要看什么。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-09 13:08:03

结果是很简单的事情。当我在Webmatrix中启动该项目时,随着它的增长,我将它移到了Visual解决方案中。当我将它移到解决方案时,它将目标框架更改为2.0而不是4。

真奇怪。把目标变回4,更新参考资料,好去!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26196131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档