Forum Discussion
PowerBI report server scale-out with NLB - bad request when open or upload PowerBI Report
- 6 years ago
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
Without NLB configuration everything works fine.
I used the may release:
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-network-load-balancing-cluster?view=sql-server-2017)
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
- Anonymous6 years agoNot applicable
Hi Jules
Did you solve it i am facing the same issue
- d_gosbell6 years ago
Super User
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-network-load-balancing-cluster?view=sql-server-ver15
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)
- Anonymous6 years agoNot 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>