Я знаю, что есть несколько других сообщений об этом исключении, но ни один из них не помог мне.Как минимум один объект должен реализовывать IComparable - работает на локальной машине, но не на сервере
Каждое из трех решений работает на моей локальной машине, но не в Live-System/на сервере.
По мере увеличения количества PackageViewModels, первое решение покинуло работу. - Внедрено второе решение. Пользователи добавили еще два элемента, а второе решение также оставило работу. Реализована третья, которая никогда не работала на сервере. : D
EDIT: - Дополнительная информация ... Функции GetTemplateTypes(), GetTemplateCategories() и GetPackages() возвращают списки моделей, которые запрашиваются через ADO.net raw SQL с SQL Server 2008. Эти функции всегда возвращая запрошенные данные, и никогда не возникает какой-либо вид исключения.
public ActionResult Package_Read([DataSourceRequest] DataSourceRequest request)
{
try
{
var templateTypes = DBRepository.GetTemplateTypes();
var templateCategories = DBRepository.GetTemplateCategories();
var templatePackages = DBRepository.GetPackages();
// Third Solution, never worked
List<PackageViewModel> packageViewModels = new List<PackageViewModel>();
foreach (var templatePackage in templatePackages)
{
PackageViewModel packageViewModel = new PackageViewModel();
packageViewModel.val1= templatePackage.val1;
packageViewModel.val2= templatePackage.val2;
packageViewModel.ID = templatePackage.ID;
packageViewModel.Type =
(from t in templateTypes where t.ID == templatePackage.ID select t).First();
packageViewModel.Category = (from t in templateCategories
where t.Category_ID == templatePackage.Category_ID
select t).First();
packageViewModels.Add(packageViewModel);
}
// Second Soltuion - Worked for an amount up to 14 packageViewModels
var packageViewModels = templatePackages.Select(p => new PackageViewModel
{
VPackage_ID = p.VPackage_ID,
VType = (from t in templateTypes where t.ID == p.VType_ID select t).Single(),
VCategory = (from t in templateCategories
where t.VCategory_ID == p.VCategory_ID select t).Single(),
val1 = p.val1,
val2 = p.val2
}).ToList();
// First Solution - Worked till a specific number of PackageViewModels (about 12)
IEnumerable<PackageViewModel> packages = DBRepository.GetPackages()
.Select(p => new PackageViewModel
{
VPackage_ID = p.VPackage_ID,
VType = DBRepository.GetTemplateType(p.VType_ID),
VCategory = DBRepository.GetTemplateCategory(p.VCategory_ID),
val1 = p.val1,
val2 = p.val2,
});
var jsonResult = Json(packageViewModels.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
catch (Exception ex)
{
Util.logger.Error(ex.Message);
return new JsonResult();
}
}
У меня абсолютно нет идеи, как справиться с этим.
Заранее благодарен!
Где ошибка, из которой выдается ошибка? Когда вы тестируете локально, вы используете тот же источник данных, что и при сбое? Не могли бы вы отправить трассировку стека ошибки? – swestner