cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
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

Accepted Solutions

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
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

 


 

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

 


 

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)

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>

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?

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


@hassam11dec 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.

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

Helpful resources

Announcements
November Update

Check it Out!

Click here to read more about the November 2020 Updates!

Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

secondImage

Power Platform October Community Highlights

Check out the top community contributors across all of the communities

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.