我在SSRS中有表达式的问题
项目
使用SSRS表达式和自定义代码进行加密,然后确定 目标是基于环境的超链接。
我们取得的成就
我们使用导入到的自定义库创建了一个自定义DLL 报告属性中的引用
从Expression中我们编写了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
在上面有两个函数,一个是不相关的,也就是Username()一个。第二个是我们需要编码的部分。
我需要帮助
我们需要先对URL的加密部分进行编码,然后再将其发送出去。但我对这需要发生的事情感到有些困惑。
所以我的理解是我需要从Expression中执行此操作,因为这是我们引用它的地方。如果那不是它发生的地方,那么在它到达表达式之前,在上面的函数中引用参数的语法是什么样的呢?
有人这样做过吗?非常感谢帮助。
答案 0 :(得分:3)
在VB.net中,您应该能够在加密数据之前使用System.Uri.EscapeDataString
对数据进行编码。像这样:
Public Function EncryptRin(ByVal Rin as string) As String
Return Encryption.AESConsole.EncryptText(Uri.EscapeDataString(Rin))
End Function