Первое, что любопытно: при создании одного файла все идет нормально и имя файла совпадает. содержимое соответствующего файла заставляет меня думать, что это может быть какая-то проблема, вызванная параллельными потоками, одна из них .
Я включаю только эскиз с основными строками кода для генерация файла с использованием Parallel.ForeEchAsync для простоты:
Код: Выделить всё
public async Task ProcessReportOnParallelAsync( PocoClass pocoObj )
{
List people = (await this.PeopleRepository.RetrieveAllInvolved( pocoObj.Params )).ToList();
await Parallel.ForEachAsync( people, new ParallelOptions{ MaxDegreeOfParallelism = 4 }, async ( personPoco, token ) =>
{
var personDetail = await this.PersonDetailsRepository( personPoco.Id, personPoco.CompanyId );
if( personDetail.ShouldGenerateReport )
{
await Report.GenerateAsync( personPoco );
}
});
}
Код: Выделить всё
public async static Task GenerateAsync( PocoClass pocoObj )
{
//setup all SSRS object configuration to request the report generation
var rsExec = new ReportExecutionServiceSoapClient( httpBinding, new EndpointAddress(SSRSReportExecutionUrl));
// ...
// Finally
await rsExec.SetExecutionParameterAsync( null, null, reportParams, "en-us" );
const string deviceInfo = @"False";
var response await rsExec.RenderAsync( new RenderRequest(null, null, "EXCELOPENXML", deviceInfo));
var byteResults = response.Result;
string filename = $@"{pocoObj.Id}_{pocoObj.Name}_{pocoObj.Company}";
string filepath = $@"{this.FolderPathForFileGeneration}\{filename}";
var fs = new FileStream(filepath, FileMode.Create, FileAccess.ReadWrite);
await fs.WriteAsync( byteResults);
fs.Close();
}
Поэтому хотелось бы понять, что же может происходить, что Я этого не понял: хранимая процедура, задействованная при создании отчета, или разница в конфигурации между двумя отчетами SSRS, или что-то еще, я не знаю.
Также если есть решение, другое предложение или лучший подход для этой реализации.
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... ilenames-m