Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
JulesE
Frequent Visitor

PowerBI report server scale-out with NLB - bad request when open or upload PowerBI Report

I have setup 2 PowerBI Report Servers in an scale-out deployment with an NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a...)

When opening the load balancer URL i can login, create folders, assign permissions. But when i try to open a powerbi report or try to upload a report an error occured.

PortalErrorMessage.png

In the RSPortal.log i find the following error:

 

2019-09-25 17:52:47.1644|ERROR|41|The remote server returned an error: (400) Bad Request.| RequestID = s_c1a68a9f-38c0-4e89-ab27-045f4ca39fbe

 

I'm using Microsoft Power BI Report Server - May 2019.

 

When creating a report with PowerBI Desktop for Reporting Services (also May 2019 version) and try to save that report on the report server the following error message appears:

PowerBI Desktop Error.png

Would be glad if anyone can help.

 

Thanks,

 

JE

 

1 ACCEPTED SOLUTION

Hi,

 

have you also configured the ReportServerURL in the rsreportserver.config file? It should be similar to this: <ReportServerUrl>https://{node FQDN}/ReportServer</ReportServerUrl>. Replace {node FQDN} with the fully qualified domain name of the node, on each of the nodes.

 

Regards,

Marius

View solution in original post

12 REPLIES 12
JulesE
Frequent Visitor

Without NLB configuration everything works fine.

I used the may release:

PowerBIReportServerVerison.png


@JulesE wrote:

I have setup 2 PowerBI Report Servers in an scale-out deployment with an NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a...)

When opening the load balancer URL i can login, create folders, assign permissions. But when i try to open a powerbi report or try to upload a report an error occured. In the RSPortal.log i find the following error:

 

2019-09-25 12:14:38.6642|ERROR|6|OData exception occurred: System.Net.WebException: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.ReportingServices.Portal.ODataWebApi.Utils.PbixReportHelper.ShouldReShred(PowerBIReport entity, Uri basePortalUrl, ILogger logger, IPrincipal userPrincipal, String reportServerHostName)
at Microsoft.ReportingServices.Portal.ODataWebApi.Common.CatalogItemControllerHelper`1.GetItem(String key)
at Microsoft.ReportingServices.Portal.ODataWebApi.V2.Controllers.CatalogItemsController.GetEntity(String key, String castName)
at Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.EntitySetReflectionODataController`1.GetRoot(ODataPath oDataPath, Int32& index)
at Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.ReflectionODataController`1.Get(ODataPath oDataPath)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext().| RequestID = s_283c6c52-ba29-4b6b-b0da-263596ff319c

 

Would be glad if anyone can help.

 

Thanks,

 

JE

 


 

Anonymous
Not applicable

Hi Jules 

Did you solve it i am facing the same issue

The steps for configure Power BI Report Server in and NLB cluster are the same as configuring SSRS in a cluster. The error you are seeing most likely means you missed doing step 3 from the following: https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a... 

 

When you upload a report or publish one from Power BI Desktop it happens in 2 steps. The first step is the server uploads the file to a temporarly local folder, then it processes the file and adds it to the report server database. If your BackConnectHostName setting is not configured correctly the second step can go back out the load balancer and get re-directed to one of the other nodes which will not have the pbix file in it's local file system. (Note: after changing this setting I think you may have to do a re-boot for it to take effect)

Anonymous
Not applicable

Step 3 is straight forward i tried still same error 

MS engineer also mentioned below

 

Please add both Vitrual Sever name(vip server name) and node FQDN(node1/node2) into both nodes

For SSL, as pre-discussion, please consider register the Certificate on the correct Virtual Server name(vip server name)

On the other hand, please tried update the Authentication Type as below::

Backup rsreportserver.config:

Update:
From:
<AuthenticationTypes>
<RSWindowsNTLM/>
</AuthenticationTypes>

To:
<AuthenticationTypes>
<RSWindowsNegotiate />
<RSWindowsKerberos />
<RSWindowsNTLM />
</AuthenticationTypes>

Anonymous
Not applicable

ssl url : bi.dev.companyname.com.au
VIP server name/Load balancer : bi.int.gslb.dev.companyname.au

BackConnectHostName: bi.int.gslb.dev.companyname.au (line1)
                                        server1.com.au (line2 FQDN name of server)
Also do the ssl need to be register on the VIP/load balancer as well?


@Anonymous wrote:

BackConnectHostName: bi.int.gslb.dev.companyname.au (line1)
                                        server1.com.au (line2 FQDN name of server)

 

This is not right. The name of the load balancer is not important. The BackConnectHostname should be the FQDN of the url the users navigate to which looks like it is bi.dev.companyname.com.au. The idea of this setting is that if the server replies to a request that was sent to bi.dev.companyname.com.au it knows that this is a local address.

 



Also do the ssl need to be register on the VIP/load balancer as well?


It depends how you have your SSL configured. Usually you can either configure the load balancer to terminate the SSL connection. Or you can get the load balancer to do SSL pass through and you setup the certificate for bi.dev.companyname.com.au on both nodes. I'm not really a load balancer expert, but we have our configuration setup to do the SSL pass through as it keeps the connection encrypted from client to the node.

Anonymous
Not applicable

Hi 

Tried everything still stuck with the 400 issue 

ssl : bi.dev.companyname.com.au (installed on both nodes)

Attached only option 1 works only, if one of the server is up and other stopped (pbix file uploaded and no 400 error) with the VIP name mentioned in BackConnectionHostname (bi.int.gslb.....) 

Rest all options give 400 error 

BackConnectionHostNameBackConnectionHostName


@Anonymous wrote:

with the VIP name mentioned in BackConnectionHostname (bi.int.gslb.....) 

 


As I mentioned earlier, for the BackConnectHostName you should be using the host name that your users enter into their browsers (so probably what you have listed as the SSL Url) not the name of your load balancer.

Hi,

 

have you also configured the ReportServerURL in the rsreportserver.config file? It should be similar to this: <ReportServerUrl>https://{node FQDN}/ReportServer</ReportServerUrl>. Replace {node FQDN} with the fully qualified domain name of the node, on each of the nodes.

 

Regards,

Marius

Hi Marius,

 

Thanks. After adding the correct fqdn in the reportserverurl i can publish powerbi reports and can create data sources.

Strange that the microsoft article explicitly notice to not change the reportserverurl while it is the solution.

https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a...

 

Anonymous
Not applicable

Marius yes offcourse

its the ssl (bi.dev.compname.edu.au) in rsreportserver.config along with machine key check below

 

<Service>
<Hostname>bi.dev.compname.edu.au</Hostname>

<UrlRoot>https://bi.dev.compname.edu.au/PBIReportServer</UrlRoot>
.....
<Configuration>
<machineKey decryption="AES" decryptionKey="EAA8............" validation="HMACSHA256" validationKey="566AF30396121............."/>

.....

JulesE
Frequent Visitor

When i remove the load balancer configuration i can open and upload reports with no errors.

I used the PowerBI Report Server may release:

PowerBIReportServerVerison.png


@JulesE wrote:

I have setup 2 PowerBI Report Servers in an scale-out deployment with an NLB (https://docs.microsoft.com/en-us/sql/reporting-services/report-server/configure-a-report-server-on-a...)

When opening the load balancer URL i can login, create folders, assign permissions. But when i try to open a powerbi report or try to upload a report an error occured. In the RSPortal.log i find the following error:

 

2019-09-25 12:14:38.6642|ERROR|6|OData exception occurred: System.Net.WebException: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.ReportingServices.Portal.ODataWebApi.Utils.PbixReportHelper.ShouldReShred(PowerBIReport entity, Uri basePortalUrl, ILogger logger, IPrincipal userPrincipal, String reportServerHostName)
at Microsoft.ReportingServices.Portal.ODataWebApi.Common.CatalogItemControllerHelper`1.GetItem(String key)
at Microsoft.ReportingServices.Portal.ODataWebApi.V2.Controllers.CatalogItemsController.GetEntity(String key, String castName)
at Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.EntitySetReflectionODataController`1.GetRoot(ODataPath oDataPath, Int32& index)
at Microsoft.ReportingServices.Portal.ODataWebApi.Controllers.Reflection.ReflectionODataController`1.Get(ODataPath oDataPath)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext().| RequestID = s_283c6c52-ba29-4b6b-b0da-263596ff319c

 

Would be glad if anyone can help.

 

Thanks,

 

JE

 


 

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors