Поскольку У меня есть несколько серверов для подключения, они где-то настроены, и строку подключения я создаю динамически с помощью кода:
Код: Выделить всё
iDB2ConnectionStringBuilder builder = new()
{
DataSource = "[ServerAddress]",
UserID = "[User]",
Password = "[Password]",
PersistSecurityInfo = true
};
Когда я выпустил этот код в производственной среде, я получаю следующая ошибка:
Код: Выделить всё
System.TypeInitializationException: The type initializer for 'Alfa.Data.DB2.iSeries.iDB2Trace' threw an exception.
---> System.UnauthorizedAccessException: Access to the path 'CWB_MP_TI_EVENT' is denied.
at System.Threading.EventWaitHandle.CreateEventCore(Boolean initialState, EventResetMode mode, String name, Boolean& createdNew)
at Alfa.Data.DB2.iSeries.iDB2NamedEvent..ctor(String eventName)
at Alfa.Data.DB2.iSeries.iDB2Trace..cctor()
--- End of inner exception stack trace ---
at Alfa.Data.DB2.iSeries.iDB2Trace.get_Tracing()
at Alfa.Data.DB2.iSeries.iDB2ConnectionStringBuilder..ctor()
Я провел реверс-инжиниринг dll и нашел код метода, в котором выдается исключение, а именно:
Код: Выделить всё
internal iDB2NamedEvent(string eventName)
{
SecurityPermission securityPermission = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
waitHandle = null;
string identity = (new SecurityIdentifier(WellKnownSidType.WorldSid, null).Translate(typeof(NTAccount)) as NTAccount).ToString();
try
{
securityPermission.Assert();
EventWaitHandleSecurity eventWaitHandleSecurity = new EventWaitHandleSecurity();
EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(identity, EventWaitHandleRights.FullControl, AccessControlType.Allow);
eventWaitHandleSecurity.AddAccessRule(rule);
waitHandle = new EventWaitHandle(initialState: false, EventResetMode.ManualReset, "CWB_MP_TI_EVENT", out var _);
}
catch
{
CodeAccessPermission.RevertAssert();
throw;
}
CodeAccessPermission.RevertAssert();
}
Я гуглил в течение 2 дней и не нашел ничего, что могло бы помочь, любые идеи будут оценены по достоинству.
Подробнее здесь: https://stackoverflow.com/questions/787 ... ess-denied
Мобильная версия