I have hit an issue with AutoQuery causing a HTTP timeout, because it takes over 100 seconds to process a query request.
The SQL query takes roughly 50 seconds to return 150 rows of 200 columns. However, it is taking an additional 100 seconds to pass the data to the client, which combined exceeds the 100 second HTTP timeout enforced on the Blazor client. (I have the same loading times using curl, so it is not client related).
Unfortunately, it does not seem possible to increase the HTTP timeout for the JsonApiClient Client
see JsonApiClient Client
Without changing the db query, I can comment out properties in the response DTO class, to have the data passed to the client under the 100 second threshold. This leads me to believe the issue is AutoQuery mapping of the db response to the response DTO.
public QueryResponse<ResponseDto> Get(QueryRequest request)
{
using var db = AutoQuery!.GetDb<ResponseDto>(Request);
var q = AutoQuery.CreateQuery(request, Request, db);
var response = AutoQuery.Execute(request, q, Request, db);
return response;
}
public class QueryRequest : QueryDb<ResponseDto>, IGet
{
public bool? P_Closed { get; set; }
public bool? S_Closed { get; set; }
}
[Schema("Report")]
[DataContract]
public class ResponseDto
{
// annotations
[DataMember] public Guid? A_Id { get; set; }
[DataMember] public string? A_FinalRemark { get; set; }
[DataMember] public bool? A_Final { get; set; }
// total of 200 properties defined (types: string, DateOnly, decimal and bool)
Any help or pointers appreciated:
-
Are there any known issues handling large column sets?
-
Any suggestions to resolve the issue?
I am using ServiceStack 6.10, Windows, MSSQL 2019, NET7 and Blazor WASM client.