Проблема исходила из веб-службы. Я передаю sessionID (его GUID) в виде строки в отчет, а затем из отчета в веб-службу. Внутри веб-сервиса я беру эту строку, преобразую ее обратно в Guid и передаю ее нашему объекту SecurityTicket.
Вот где возникла проблема. Видимо этот звонок:
Guid passedGuid = new Guid(sessionID);
Не нравится набор данных служб отчетности. Инженер по поддержке технической поддержки Майкрософт работает со мной, чтобы проверить, что именно происходит, и если будет исправление, будет исправление и т. Д. Я собираюсь обойти мой код, который не требует GUID для передачи на SecurityTicket.
Редактировать - Решение
По сути, каждый раз, когда вы вносите изменения на вкладке данных, он инициирует вызов набора данных веб-службы, отправляющий нулевые параметры. Если ваш веб-сервис не может обработать нулевые параметры, он выдаст ошибку, удалив все ваши параметры.
Чтобы легко преодолеть это, первая строка нашего веб-сервиса проверяет нулевые параметры и устанавливает некоторые значения по умолчанию. Затем, если возвращаемый набор данных пуст, мы добавляем фиктивную строку:
private static void addDummyRow(DataTable dt) {
var row = dt.NewRow();
for (int i = 0; i < dt.Columns.Count; i++) {
if (dt.Columns[i].DataType == typeof(string)) {
row[i] = dt.Columns[i].ColumnName;
}
else if (dt.Columns[i].DataType == typeof(DateTime)) {
row[i] = new DateTime(1900, 1, 1);
}
else {
row[i] = 0;
}
}
dt.Rows.Add(row);
}