2015-09-23 66 views
2

我有一个问题,在SSRSSSRS URL编码

项目

使用SSRS表达式表达式和自定义代码来加密,然后确定目标 超链接基于环境。

我们已经完成

我们已经使用导入 引用在报告属性

从表达式中的自定义库中创建自定义的DLL,然后我们写switch语句确定 的目标如下:

表达

=Switch 
(
Globals.ReportServerUrl = "https://devportal2.xxx.com/sites/Co" , "https://stage.connect.com/secure/clr/er=" & Code.EncryptRin(Fields!Member_Member_ID_.Value), 
Globals.ReportServerUrl = "https://testportal2.xxx.com/sites/Co" , "https://stage.connect.com/secure/clr/er=" & Code.EncryptRin(Fields!Member_Member_ID_.Value), 
Globals.ReportServerUrl = "https://stageportal2.xxx.com/sites/Co" , "https://www.connect.com/secure/clr/er=" & Code.EncryptRin(Fields!Member_Member_ID_.Value), 
Globals.ReportServerUrl = "https://stageportal2.xxx.com/sites/Co" , "https://www.connect.com/secure/clr/er=" & 
Code.EncryptRin(Fields!Member_Member_ID_.Value),true, "https://stage.connect.com/secure/clr/er=" + Code.EncryptRin(Fields!Member_Member_ID_.Value) 
) 

自定义代码

Public Function UserName() 
Try 
    Return Report.User!UserID 
    Catch 
    Return "System" 
    End Try 
End Function 


Public Function EncryptRin(ByVal Rin as string) As String 
    Return Encryption.AESConsole.EncryptText(Rin) 
End Function 

在上面有两个功能,一个是不相关的,这就是用户名()之一。第二个是我们需要编码的部分。

我需要什么

我们需要的URL加密部分编码帮助之前,我们可以通过发送。但我有点困惑,在哪里需要发生。

所以我的理解是我需要从表达式这样做,因为那就是我们引用它的地方。如果这不是它发生的地方,那么在语句到达表达式之前,语法看起来会在上面的函数中引用一个参数?

有没有人这样做?非常感谢帮助。

+0

问题是什么?它看起来应该是工作。您的加密** MemberID **将被添加到**表达式**中使用**开关**所使用的任何URL。 –

+0

我需要在字符串被加密之前对它进行编码。 @HannoverFist – Hituptony

回答

3

在VB.net中,您应该可以使用System.Uri.EscapeDataString在对数据进行加密之前对其进行编码。类似这样的:

Public Function EncryptRin(ByVal Rin as string) As String 
    Return Encryption.AESConsole.EncryptText(Uri.EscapeDataString(Rin)) 
End Function