Золотое правило состоит в том, чтобы Ни при каких обстоятельствах заблокировать Ваш пользовательский браузер. После этого я обычно смотрю на время выполнения, сопровождаемое использованием памяти (если Вы не делаете что-то сумасшедшее, в этом случае это мог быть более высокий приоритет).
Отвечая на свой вопрос здесь, надеясь, что кто-то другой сочтет это полезным:
У меня сложилось (ложное) впечатление, что уникального «DataSourceID», присвоенного источнику данных на сервере, будет достаточно для его уникальной идентификации.
Итак, в моем сгенерированном RDL, у меня было что-то вроде:
<DataSources>
<DataSource Name="MyDataSource">
<Transaction>true</Transaction>
<DataSourceReference>MyDataSource</DataSourceReference>
<rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
<rd:SecurityType>None</rd:SecurityType>
</DataSource>
</DataSources>
Теперь это сработало однажды, когда мой источник данных действительно назывался «MyDataSource» и находился в том же каталоге, что и мой отчет, который я опубликовал через RS WebService API.
Как только я переместил источник данных в другое место, он перестал работать.
РЕШЕНИЕ:
Это может показаться глупым, но я действительно сначала не "понял": DataSourceReference
должен иметь полный и полный "путь" на сервере отчетов к этот источник данных, на который я хочу сослаться. Просто указать уникальный идентификатор не получится ....
Итак, как только я изменил свой RDL на:
<DataSources>
<DataSource Name="MyDataSource">
<Transaction>true</Transaction>
<DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>
<rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID>
<rd:SecurityType>None</rd:SecurityType>
</DataSource>
</DataSources>
(обратите внимание на
)
с того момента он работает как чары.
Надеюсь, что когда-нибудь это окажется полезным!