SSRS 将 URL 中的 Base64 字符串或字节数组显示为图像
SSRS Show Base64 String or Byte Array From URL as Image
我有一个 wevservice returns 图像作为 Base64 字符串或字节数组,我需要在 SSRS 中显示为图像。不知道该怎么做。
我尝试在图像属性中使用表达式:
=System.Convert.FromBase64String("http://localhost:5460/api/Report/GetImage")
但这不起作用。如何从 URL 中获取字符串或数组,然后将其显示为图像?
我也尝试过代码块,但是当我尝试
Dim hwr As System.Net.HttpWebRequest
hwr = System.Net.WebRequest.Create("http://localhost:5460/api/Report/GetImage")
我收到错误:
Severity Code Description Project File Line Suppression State
Warning [rsRuntimeErrorInExpression] The Value expression for the textrun 'Textbox2.Paragraphs[0].TextRuns[0]' contains an error:
Insufficient permissions for setting the configuration property 'maximumErrorResponseLength'. (c:\program files (x86)\microsoft visual studio17\sql\common7\ide\commonextensions\microsoft\ssrs\PreviewProcessingService.exe.Config line 42) C:\Users\Desktop\REP90011\REP90011.rdl 0
这是在我的本地机器上,而不是在 SSRS 服务器上或通过 IIS。只需通过 VS 2017 中的预览窗格即可。
问题是我需要允许我桌面上文件 RSPreviewPolicy.config 的权限为 'FullTrust' 而不是 'Nothing' 以便能够使用 'System.Net.WebRequest.Create'.
编辑:
我被要求详细说明我的流程是如何工作的,所以这里是:
我有一个网络服务,可以获取图像并将其 returns 作为 base64 字符串。
在报表上放置一个图像对象,将其设置为'Database'、'image/bmp',并将此表达式用作字段:
=Convert.FromBase64String(Code.GetImageString("http://localhost:5460/api/Report/GetImage")
URL 是 returns 字符串的网络服务。
函数 GetImageString 在报表属性的代码部分:
Public Function GetImageString(Url As String) As String
'create web request
Dim hwr As System.Net.HttpWebRequest
'this line is what I needed to change the permissions for
hwr = System.Net.WebRequest.Create(Url)
hwr .Credentials = System.Net.CredentialCache.DefaultCredentials
'get response from request
Dim wr As System.Net.WebResponse
wr = hwr.GetResponse()
'get stream from response
Dim sr as System.IO.Stream
sr = wr.GetResponseStream()
'read response stream
Dim read As IO.StreamReader
read = new IO.StreamReader(sr, System.Text.Encoding.UTF8)
'convert stream to string
Dim result as string
result = read.ReadToEnd
return result.substring(1, result.length - 2) 'remove first and last characters, it's putting in quotes
End Function
在 VS 2017 中,这在我的桌面上运行良好。在 VS 2019 中,它在我的桌面上显示一个红色 x,但在部署到服务器时仍然有效。
我有一个 wevservice returns 图像作为 Base64 字符串或字节数组,我需要在 SSRS 中显示为图像。不知道该怎么做。
我尝试在图像属性中使用表达式:
=System.Convert.FromBase64String("http://localhost:5460/api/Report/GetImage")
但这不起作用。如何从 URL 中获取字符串或数组,然后将其显示为图像?
我也尝试过代码块,但是当我尝试
Dim hwr As System.Net.HttpWebRequest
hwr = System.Net.WebRequest.Create("http://localhost:5460/api/Report/GetImage")
我收到错误:
Severity Code Description Project File Line Suppression State
Warning [rsRuntimeErrorInExpression] The Value expression for the textrun 'Textbox2.Paragraphs[0].TextRuns[0]' contains an error:
Insufficient permissions for setting the configuration property 'maximumErrorResponseLength'. (c:\program files (x86)\microsoft visual studio17\sql\common7\ide\commonextensions\microsoft\ssrs\PreviewProcessingService.exe.Config line 42) C:\Users\Desktop\REP90011\REP90011.rdl 0
这是在我的本地机器上,而不是在 SSRS 服务器上或通过 IIS。只需通过 VS 2017 中的预览窗格即可。
问题是我需要允许我桌面上文件 RSPreviewPolicy.config 的权限为 'FullTrust' 而不是 'Nothing' 以便能够使用 'System.Net.WebRequest.Create'.
编辑: 我被要求详细说明我的流程是如何工作的,所以这里是:
我有一个网络服务,可以获取图像并将其 returns 作为 base64 字符串。
在报表上放置一个图像对象,将其设置为'Database'、'image/bmp',并将此表达式用作字段:
=Convert.FromBase64String(Code.GetImageString("http://localhost:5460/api/Report/GetImage")
URL 是 returns 字符串的网络服务。
函数 GetImageString 在报表属性的代码部分:
Public Function GetImageString(Url As String) As String
'create web request
Dim hwr As System.Net.HttpWebRequest
'this line is what I needed to change the permissions for
hwr = System.Net.WebRequest.Create(Url)
hwr .Credentials = System.Net.CredentialCache.DefaultCredentials
'get response from request
Dim wr As System.Net.WebResponse
wr = hwr.GetResponse()
'get stream from response
Dim sr as System.IO.Stream
sr = wr.GetResponseStream()
'read response stream
Dim read As IO.StreamReader
read = new IO.StreamReader(sr, System.Text.Encoding.UTF8)
'convert stream to string
Dim result as string
result = read.ReadToEnd
return result.substring(1, result.length - 2) 'remove first and last characters, it's putting in quotes
End Function
在 VS 2017 中,这在我的桌面上运行良好。在 VS 2019 中,它在我的桌面上显示一个红色 x,但在部署到服务器时仍然有效。