I simply overriden 1 method in class inheriting from ReportsControllerBase and all is working without enabling SychronousIO:
/// <summary>
/// </summary>
[AllowAnonymous]
[HttpGet(
"old/clients/{clientID}/instances/{instanceID}/documents/{documentID}/resources/{resourceID}"
)]
public
override
void
GetResource(
string
clientId,
string
instanceId,
string
documentId,
string
resourceId)
{
base
.GetResource(clientId, instanceId, documentId, resourceId);
}
/// <summary>
/// </summary>
[AllowAnonymous]
[HttpGet(
"clients/{clientID}/instances/{instanceID}/documents/{documentID}/resources/{resourceID}"
)]
public
async Task GetResourceAsync(
string
clientId,
string
instanceId,
string
documentId,
string
resourceId)
{
var propertyInfo =
typeof
(ReportsControllerBase).GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly).Single(p => p.Name ==
"Engine"
);
var engine = (IReportEngine)propertyInfo.GetValue(
this
);
var resource =
engine.GetResource(clientId, instanceId, documentId, resourceId);
var data = resource.Bytes;
await
this
.Response.Body.WriteAsync(data, 0, data.Length);
}