Ich weiß, es gibt mehrere andere Post über diese Ausnahme, aber keiner von ihnen hat mir geholfen.Mindestens ein Objekt muss IComparable implementieren - arbeiten auf lokaler Maschine, aber nicht auf Server
Jede der 3 Lösungen funktioniert auf meinem lokalen Computer, aber nicht in Live-System/Auf dem Server.
Als die Anzahl der PackageViewModels stieg, beendete die erste Lösung die Arbeit. - Implementierte zweite Lösung. Benutzer hinzugefügt zwei weitere Elemente und die zweite Lösung auch aufgegeben Arbeit - implementiert dritten, die nie auf Server gearbeitet. : D
EDIT: - Weitere Informationen ... Die Funktionen GetTemplateTypes(), GetTemplateCategories() und GetPackages() geben Listen von Modellen zurück, die über ADO.net Raw SQL von SQL Server 2008 abgefragt werden. Diese Funktionen sind immer die abgefragten Daten zurückgeben und theres nie irgendeine Art von Ausnahme werfen.
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();
}
}
Ich habe absolut keine Idee, wie damit umzugehen.
Vielen Dank im Voraus!
Woher wird der Fehler geworfen? Wenn Sie lokal testen, verwenden Sie die gleiche Datenquelle wie wenn es fehlschlägt? Könnten Sie den Stack-Trace des Fehlers buchen? – swestner