#c# #asp.net-core #windows-services #dllimport #webapi
Вопрос:
- DLL, если они находятся в bin /
- Кроме того, это приложение корректно работает с консолью
- Я использую netcore 2.2
- Импорт dll класса
public class SDK
{
public const int POSITION_TOP_LEFT = 0;
public const int POSITION_TOP = 1;
public const int POSITION_TOP_RIGHT = 2;
public const int POSITION_RIGHT = 3;
public const int POSITION_BOTTOM_RIGHT = 4;
public const int POSITION_BOTTOM = 5;
public const int POSITION_BOTTOM_LEFT = 6;
public const int POSITION_LEFT = 7;
public const int POSITION_CENTER = 8;
public const int WEBCAM_VIEW_PADDING = 0;
public const int WEBCAM_VIEW_CROPPING = 1;
public const int WEBCAM_VIEW_STRETCHING = 2;
[DllImport("ScnLib.dll")] public static extern void ScnLib_About();
[DllImport("ScnLib.dll", CharSet = CharSet.Unicode)] public static extern bool ScnLib_SetLicenseW(string Name, string Email, string Key);
[DllImport("ScnLib.dll", CharSet = CharSet.Unicode)] public static extern void ScnLib_GetErrorMessageW(StringBuilder ErrMsg); // ErrMsg >= 2048 Chars
[DllImport("ScnLib.dll")] public static extern bool ScnLib_CheckComponents();
[DllImport("ScnLib.dll")] public static extern bool ScnLib_Initialize();
[DllImport("ScnLib.dll")] public static extern void ScnLib_Uninitialize(); }
- Конечная точка веб-Api
[HttpGet("start")]
public IActionResult start()
{
try
{
bool test = ZDSoft.SDK.ScnLib_IsRecording();
log.Debug("seguimiento 0_ = " test);
if (ZDSoft.SDK.ScnLib_IsRecording())
{
log.Warn("Grabación activa.");
return BadRequest("Grabación activa.");
}
log.Debug("seguimiento 00_");
bool test2 = ZDSoft.SDK.ScnLib_Initialize();
log.Debug("seguimiento 000_");
ZDSoft.SDK.ScnLib_SetLicenseW("example", "example", "example");
ZDSoft.SDK.ScnLib_SetVideoBitrate(720);
ZDSoft.SDK.ScnLib_SetLogoImageW("logo.png");
log.Debug("seguimiento 1_");
ZDSoft.SDK.ScnLib_SetLogoPosition(ZDSoft.SDK.POSITION_TOP_RIGHT, 0, 0);
if (!ZDSoft.SDK.ScnLib_IsRecordAudioSource(false))
{
ZDSoft.SDK.ScnLib_RecordAudioSource(false, true);
}
log.Debug("seguimiento 2_");
var path = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
"Recording", $"{Guid.NewGuid()}.mp4");
ZDSoft.SDK.ScnLib_SetVideoPathW(path);
log.Debug("seguimiento 3_");
ZDSoft.SDK.ScnLib_StartRecording();
log.Debug("seguimiento 4_");
log.Info("Grabacion en Progreceso...");
return Ok("Grabacion en Progreceso...");
}
catch (Exception ex)
{
log.Error(ex.Message);
return BadRequest(ex.Message);
}
}
- Отслеживание журнала заключается в том, что в этой строке
bool test2 = ZDSoft.SDK.ScnLib_Initialize();
Я искал ответ, я видел, что это может быть вопрос разрешений, но если это так, потому что при запуске приложения в visual studio у меня есть правильное функционирование и даже при выполнении сборки
Комментарии:
1. Есть ли какое-либо сообщение об ошибке? Как вы сказали, возможно, проблема связана с разрешением или файлом DLL, отсутствующим после развертывания, поэтому попробуйте получить подробное сообщение об ошибке.
2. У меня нет сообщения об ошибке, оно просто продолжает загружаться и больше ничего не делает, у меня даже есть журнал событий Windows и нет журнала ошибок.
3. Я читал, что это было связано с типом сеанса, который был у службы, так как эта библиотека dll предназначена для записи экрана, но я даже видел, что службы с сеансом 0 нет, но все еще есть приложения, которые делают то же самое, но я не знаю, как это сделать, если это было решением.
4. Также, если я вызываю другую функцию библиотеки dll, она хорошо реагирует, но по совпадению эта функция не вызывает запись, если не состояние, это заставляет меня думать, что если это проблема с записью в частности.