如何在没有凭据的情况下在Web查看器中加载水晶报表?

时间:2014-12-15 16:44:08

标签: asp.net vb.net crystal-reports

您好我们有一个内部基于vb.net的应用程序,它允许用户加载和访问我们在文件服务器上生成的报告。创建它们时,它们是使用ODBC连接在visual studio设计器中创建的。我们已决定使用asp.net将此应用程序移植到基于Web的系统,但遇到了障碍。网页上的查看器将加载报告(我们可以通过某些报告上显示的日期标准来验证),但会出现一个登录页面,要求我们提供以下字段;服务器名称,数据库名称,用户名和密码。作为服务器名称的顶部字段不正确,因为它不是有效的主机名,遗憾的是它不会让我们更改它。我已尝试各种in-code方法来覆盖此消息。我已在代码中设置凭据,禁用了代码中的登录,我甚至将确切的ODBC连接设置复制到运行该站点的服务器上。有没有人遇到像这样的水晶报告观众的问题?

我尝试解决此问题的一些代码是创建凭据并为每个表设置它们。

  For Each CrTable In CrTables
        crTableLogonInfo = CrTable.LogOnInfo
        crTableLogonInfo.ConnectionInfo =
        ConnInfo
        CrTable.ApplyLogOnInfo(crTableLogonInfo)
    Next

1 个答案:

答案 0 :(得分:0)

首先,您需要将参数作为键添加到Web配置中,如下所示:

<add key="ServerName" value="Your Server"/>
<add key="DataBaseName" value="Your DB Name"/>
<add key="DatabaseUser" value="DB User"/>
<add key="DatabasePassword" value="DB Password"/>

其次,在报告查看器文件中,在绑定报告方法中添加以下代码:

    Dim SERVER_NAME As String = ConfigurationManager.AppSettings("ServerName").ToString()
    Dim DATABASE_NAME As String = ConfigurationManager.AppSettings("DataBaseName").ToString()
    Dim DatabaseUser As String = ConfigurationManager.AppSettings("DatabaseUser").ToString()
    Dim DatabasePassword As String = ConfigurationManager.AppSettings("DatabasePassword").ToString()

最后添加以下代码:

rptobj.SetDatabaseLogon(DatabaseUser, DatabasePassword, SERVER_NAME, DATABASE_NAME)

*一些开发人员发现此方法不安全,因为您显示的是可以对其进行加密的数据库凭据,然后针对安全问题对其进行解密。