Witam.
Piszę dalej (podejście nr 1241) połączenie ASP .NET Core + Angular do Comarch Optima. Udało mi się nawet z tym dość daleko zajść. Ktoś na forum poradził mi (nie pamiętam wątku), że do trzymania obiektów mogę sobie stworzyć klasę statyczną i tam trzymać wszystkie loginy:
public static class OptimoLogin
{
public static ConcurrentDictionary<int, ILogin> logins;
}
// Tworzenie nowego obiektu ILogin i dopisanie go do słownika
if(OptimoLogin.logins == null)
{
ILogin login = application.LockApp(256, 5000, null, null, null, null);
login = application.Login("ADMIN", "admin", "Firma Demo", 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
OptimoLogin.logins = new System.Collections.Concurrent.ConcurrentDictionary<int, ILogin>();
OptimoLogin.logins.TryAdd(1, login);
}
To logowanie jest prowizoryczne. Ono będzie wyglądać kompletnie inaczej. Na tę chwilę zajmuje się samą obsługą dodawania dokumentów, więc tokeny i logowanie było by uciążliwe. W momencie kiedy chce dokument anulować, dostaję błąd z tytułu.
public PostResponse CancelDocument(int id)
{
if(OptimoLogin.logins != null)
{
AdoSession session = OptimoLogin.logins[1].CreateSession(); // <=== Insufficient memory to continue execution of the program
DokumentHaMag dokument = (DokumentHaMag)session.CreateObject("CDN.DokumentyHaMag", "TrN_TrNID = " + id);
dokument.AnulujDok(id);
session.Save();
return new PostResponse(-1, "Dokument został pomyślnie anulowany");
}
else
{
return new PostResponse(0, "Sesja wygasła zaloguj się jeszcze raz do systemu");
}
}
Błąd pojawia się w momencie próby stworzenia sesji (komentarz w kodzie) w metodzie CancelDocument().