问题来自web服务内部。我将sessionID(它的GUID)作为字符串传递给报表,然后从报表传递给web服务。在web服务中,我获取该字符串并将其转换回Guid,然后将其传递给我们的SecurityTicket对象。
这就是问题发生的地方。显然,这个电话:
Guid passedGuid = new Guid(sessionID);
reporting services数据集不喜欢。一位Microsoft支持升级工程师正在与我合作,以验证到底发生了什么,以及是否存在修复,是否将要修复,等等。。。我将为我的代码做一个变通,它不需要向SecurityTicket传递GUID。
编辑-解决方案
为了轻松克服这个问题,web服务的第一行检查空参数并设置一些默认值。然后,如果返回的数据集为空,则添加一个虚拟行:
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);
}