Front w Angularze. Backend w C#.
Wszystko mi działa tak jak zaplanowałem, jednak jeśli chcę użyć cdn_api to otrzymuję Access Violation(Zrzut w załączeniu).
Dzieje się to losowo. Czasami można kila razy połączyć się i działa bez zarzutu.
Celem aplikacji jest dodawanie lub zmiana atrybutu na zamówieniu.
Na ten moment tylko logowałem się do systemu, żeby sprawdzić czy działa mi cdn_api.
Dodałem ClaRUN.dll.
Może ktoś miał podobną sytuację i umiałby wskazać gdzie mam błąd.
Poniżej kod:
Kod: Zaznacz cały
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using backendAPI.Models;
using System.Linq;
using backendAPI;
using Microsoft.AspNetCore.Http.HttpResults;
using System.Runtime.InteropServices;
namespace OnlineZS.Controllers
{
[ApiController]
[Route("[controller]")]
public class ZamowienieSprzedazyController : ControllerBase
{
[DllImport("ClaRUN.dll")]
private static extern void AttachThreadToClarion(int flag);
protected void AttachThread(int flag)
{
try
{
AttachThreadToClarion(flag);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
private readonly ErpxlContext _context;
public ZamowienieSprzedazyController(ErpxlContext context)
{
_context = context;
}
[HttpPost("change-status")]
public IActionResult ChangeStatus([FromBody] AttributeStatus zsID)
{
AttachThread(1);
int gidNumer = zsID.ZSGidNumer;
if (gidNumer > 0)
{
var zsStatus = _context.Atrybuties
.Where(atrStatus => atrStatus.AtrAtkId == 87 && atrStatus.AtrObiNumer == gidNumer).ToList()
.Select(zamAtr => zamAtr.AtrWartosc)
.FirstOrDefault();
switch (zsStatus)
{
case null:
return Ok("Null");
break;
case "NIE":
XLHead XlHead = new XLHead();
int tmp = XlHead.XlLogin();
return Ok(tmp);
break;
case "TAK":
return Ok("TAK");
break;
default:
return BadRequest("Error - ZamID");
}
}
else
{
return BadRequest("Nieprawidłowy numer ID.");
}
}
}
}