Задать вопрос
  • Можно ли через второго локального админа переименовать ПК и перезайти в домен?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Ввод ПК в домен и вывод из домена требуют полномочий в двух местах: на самом ПК и в домене. На самом ПК достаточно полномочий локального администратора. И их вполне достаточно, чтобы, по крайней мере, вывести ПК из домена -возможно, не почистив за собой, но, по крайней мере, ПК от домена вы отвяжете. С полномочиями в домене могут быть разные варианты, поэтому, если у вас есть человек, отвечающий за домен, лучше обратиться к нему.

    Например, он может сбросить существующую учетную запись ПК в домене, и вы сможете ввести ПК в домен под тем же именем.

    То, как хотите сделать вы, скорее всего (как я писал, возможны варианты, в зависимости от настроек(, сделать возможно, но будет несколько неаккуратно: например, в домене останется учетная запись ПК со старым именем.
    Ответ написан
    Комментировать
  • Почему я получаю ObjectDisposedException из за DbContext-а? Когда он очищается?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Я не вижу откуда у вас вызывается JobWasExecuted, поэтому ответ пока будет чисто теоретический. Контекст БД (потомок DbContext), получаемый из контейнера DI в настроке по умолчанию (как у вас, судя по написанному), имеет время жизни Scoped. То есть, при обработке запросов к веб-серверу он создается отдельно для каждого запроса и очищается при завершении обработки этого запроса.

    Просто так взять и обратиться к такому контексту из других частей программы, которые могут работать независимо от обработчика запроса (например, из фонового сервиса) нельзя: после завершения запроса получите именно такую ошибку.

    Так что, если вам нужно получить контекст БД с нестандартным временем жизни, придется отказаться от получения его через DI со стандартной настройкой.

    Время жизни контекста, получаемого через DI, можно изменить, но тут надо хорошо понимать, что и как вы делаете. Например, к DbContext нельзя обращаться параллельно из нескольких потоков - но при типичной обработки запроса такого и не случается. Так что у меня есть сомнение что вам стоит менять штатную настройку.

    Штатным способом получения контекстов с нестандартным временем жизни является сервис фабрики на базе DbContextFactory (его тоже можно получить через DI, как - см. документацию). Но следить за временем жизни такого контекста вам придется самостоятельно.
    Ответ написан
    1 комментарий
  • Где хранится список black ip IIS 10?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    В apphost.config, для IIS, который идет в составе ОС, это %windir%\System32\inetsrv\config\applicationHost.config (для IIS Express - в другом месте). Интересующая вас секция (имя в формате для appcmd, т.е. последовательность вложенных элементов XML) - system.webServer/security/ipSecurity. Документация тут.
    Ответ написан
    Комментировать
  • Почему данные из представления не передаются в модель в ASP.NET?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Источник проблемы с привязкой действия: в теле ответа у вас нет ничего, кроме antiforgery token. Так что надо смотреть на клиенте HTML, который сгенерил движок представления - похоже, кривизна там, форма сгенерена неверно.
    Перед просмотром имеет смысл включить для окна/вкладки, где будет страница с формой, средства отладки браузера (F12) и смотреть ошибки, которые они выведут - может, они что найдут в авттоматическом режиме.

    Конкретную причину ошибки я пока не опознаю. Подозрение у меня вызывает атрибут asp-for=Id для первого элемента формы: значения атрибутов tag helper чисто по синтаксису надо указывать в кавычках, потому что они подчиняются тому же синтаксису, что и обычные атрибуты HTML. Но в этом ли причина, утверждать не могу.
    Ответ написан
  • Какие права получает учётная запись в Windows, не входящая ни в одну группу?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Маркер доступа, создаваемый для любой учетной записи содержит хорошо известный идентификатор безопасности(SID) для Everyone(Все). Маркер для любой учетной записи, прошедшей аутентификацию (не гостевой), содержит SID Authenticated Users(Прошедшие проверку). Маркер для учетной записи, выполнившей вход в систему содержит SID, соответствующий типу входа: Interactive и пр. И там может ещё некоторое количество хорошо известных SID, назначаемых процессом входа в систему. Чтобы посмотреть их конкретно для учетной записи, выполните команду whoami /groups.
    Этот набор SID и определяет разрешения на доступ к объектам в системе.

    PS А ешё кроме разрешений у учетной записи могут быть привилегии, не связанные с объектами.
    Ответ написан
    2 комментария
  • Можно ли использовать Expression без типов-делегатов?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вкратце: не заморачивайтесь.
    В ремесле программирования есть полезный принцип, обозначаемый англоязычным сокращением YAGNI, что в переводе означает "Вам это не понадобится." Согласно этому принципу, раз вы не знаете, как можно использовать Expression с параметром-типом не являющимся делегатом, то вам вряд ли понадобится его так использовать.
    А проверки параметра-типа там нет, скорее всего, потому что эта функциональность (она называется Expression trees) появилось давно, больше 15 лет назад, в .NET Framework 3.5, а тогда в .NET проверки параметра-типа ЕМНИП не было.
    Но, подозреваю, что попытка использовать в качестве TDelegate не тип-делегат просто приведет к ошибке: почти наверняка - при попытке получить исполняемый код из выражения (метод Compile), а, возможно, и раньше - или при попытке создания объекта, или даже на этапе написания кода или компиляции: ее может (да или нет - не проверял) обнаружить анализатор при компиляции исходного кода и даже IntelliSense. И подозреваю, что при попытке обойти дерво такого объекта Expression tree (это - альтернативный способ использования этой функциональности), тоже будет ошибка - ибо выражение получается бессмысленным.
    В любом случае, истиной в последней инстанции является исходный код. Если вам так уж захотелось узнать, что будет - читайте исходный код: он лежит на GitHub, ссылка есть в документации по классу в learn.microsoft.com (сразу предупреждаю: там все сложно).
    Ответ написан
    Комментировать
  • Как реализовать потоковое заполнение массива другим потоком?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Сколько там недочетов. потенциальных ошибок. неверных решений?

    1. У вас намешаны синхронная - в с одном потоке с блокировками (Wait, Sleep) - и асинхронная (async/await) многозадачность Теоретически, совмещать их можно, но лучше остановиться на каком-то одном подходе - легче будет. Синхронное выполнение задач (каждая - в своем потоке, который она блокирует по необходимости) - это проще, но асинхронное выполнение (при которм поток не блокируется, а освобождается, а задача планируется для продолжения после завершения операции в свободном потоке) позволяет получить больше производительности. Вот и выбирайте, что вам нужнее.
    2. Для синхронизации используйте не переменные (а, к примеру, isRun у вас используется именно для этого), а объекты синхронизации. В частности, isRun следует заменить на объект синхронизации. Для синхронного выполнения лучше всего IMHO подойдет ManualResetEventSlim. для асинхронного - что-нибудь, на чем можно сделать await (например, TaskCompletionSource.Task).
    3. Любой доступ к совместно используемым в разных задачах объектам(ресурсам) следует синхронизировать путем захвата связанного с ресурсом объекта исключающего доступа. Для синхронного выполнения подойдет оператор lock (вижу, что вы его уже используете). Для асихронного выполнения lock можно использовать, но - только если в его теле нет await (и компилятор вам не позволит нарушить это правило). Не пытайтесь обойти это правило, используя вместо lock другие объекты синхронизации, подразумевающие захват владения на уровне потока (Monitor, Mutex...) - компилятор всего лишь не сможет вам помешать сделать ошибку. В таком случае для синхронизации можно использовать SemaphoreSlim, но это требует понимания и аккуратности, поэтому подробности пока не пишу.
    Думаю, пока этой информации к размышлению вам хватит.
    Ответ написан
    1 комментарий
  • Почему такая скорость копирования?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Обращает на себя внимание тот факт, что скорость копирования совпадает с со скоростью записи с произвольным доступом. То есть, похоже что линейная запись на виртуальный диск оказывается, с точки зрения ваших HDD записью с произвольным доступом.

    Смотреть надо там. Но я не знаком детально с ZFS, поэтому не могу подсказать, что и как вам надо посмотреть.
    Ответ написан
    Комментировать
  • Почему Server 2016 и server 2003 не понимают друг друга?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Копать тут - в поддерживаемые протоколы шифрования для Kerberos: недоступность по имени при доступности по IP - вообще типичный признак проблем с Kerberos, а тут ещё в наше время MS повадилась отключать старые протоколы как "небезопасные" - потому что безопасность (показная) стала продаваемой, ее якобы наличие увеличивает ценность продукта в глазах клиентов.
    Ответ написан
    1 комментарий
  • Почему не применяются политики в OU?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    У политик есть две части (конфигурация и предпочтения) - для компьютера и для пользователя. Каждая часть применятеся для иерархии подразделений(OU), где находится учетная запись соответственно компьютера и пользователя.
    Давайте я попробую угадать: вы настроили в политике часть, применяемую для пользователя, и привязали ее к OU, где находится учетная запись компьютера, так? Так оно по умолчанию не работает. Что делать - это зависит от того, что вы хотите. Если вам нужно настроить политику для пользователя независимо от компьютера, где он работает - привяжите политику к подразделению, где находится учетная запись пользователя. Если вам нужно настроит политику для пользователя, чтобы она применялась на компьютерах указанного подразделения - включите в части политики для компьютера действующей на это подразделение режим замыкания (loopback processing).
    Ответ написан
    Комментировать
  • Как отключить добавление DNS суффиксов?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    nslookup использует свой собственный компонент разрешения имен DNS, а не системный, и потому суффиксы он дописывает сам.
    Если вам нужно, чтобы nslookup не дописывал суффиксы - просто поставьте в конце имени точку: "nslookup ya.ru."
    Ответ написан
    6 комментариев
  • Как переадресовать с внешнего домена на внутренний через dns?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    У вас сервер DNS на КД является полномочным для зоны домена example.ru. Поэтому все записи он разрешает чеез свою зону (обычно - интегрированную с AD). Менять такую настройку не надо - иначе замучаетесь с настройко домена AD. Надо решать задачу по-другому, через имеющуюся внутреннюю копию зоны.

    Задача, на самом деле распадается на две:
    1. Настроить публикацию сайта с именем, совпадающим с именем домена
    2. Настроить публикацию других сайтов
    Вариантов решения первой задачи два. Как известно, по умолчанию КД по умолчанию регистрируют записи A с именем домена и своим адресом. Поэтому нужно сделать одно из двух:

    1. настроить на всех КД обратный прокси для публикации внешнего сайта, совпадающего с именем домена. Для IIS для этого используется модуль ARR (Application Request Routing).
    2. Запретить через политику (Default Domain Controller Policy)регистрацию КД записей A с именем домена. Это можно делать практически безопасно - эти записи нужны только для устаревших ещё во времена Windows 2000 клиентов LDAP, которые ищут сервер LDAP домена по записи типа A с его именем. Все хоть сколько-нибудь современные клиенты (включая саму Windows) ищут сервер LDAP для домена по записям SRV. Нужный раздел политики - Конфигурация Компьютера/Административные шаблоны/Система/Сетевой вход в систему/DNS-записи локатора домена/DNS-записи контроллеров домена, не регистрируемые контроллерами домена: добавьте туда слово LdapIPAddress.

    А для других сайтов просто добавьте в зону домена их имена с нужными IP.
    Ответ написан
  • Поиск куда можно добраться по графу за время?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Алгори́тм Де́йкстры (англ. Dijkstra’s algorithm) — алгоритм на графах, изобретённый нидерландским учёным Эдсгером Дейкстрой в 1959 году. Находит кратчайшие пути от одной из вершин графа до всех остальных.

    Здесь
    Ответ написан
    Комментировать
  • Можно ли как-то откатить локальный репозиторий до локального коммита?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Как-то - можно, если вы зафиксировали изменения, конечно - а, как вы пишете, вы их зафиксировали.
    Для начала, посмотрите, что вы там делали, с помощью git reflog: там зафиксированы и коммиты, и переключения веток. Думаю первых десяти записей (git reflog -10) вам хватит, если нет - увеличьте число в команде.

    Скорее всего, вы быстро увидите название ветки, с которой переключились на main, после вы этого сможете переключиться обратно на нее с помощью git checkout.
    Ответ написан
    1 комментарий
  • RADIUS (Windows) c какой ролью можно совместить?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    C AD DS (т.е. , контроллером домена): серверу RADIUS не придется лишний раз лазить в сеть.
    Ответ написан
    Комментировать
  • Как в C# в динамике задать у обощенного класса тип поля хранимого значения?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Для задания динамического типа для поля в C# есть ключевое слово dynamic. Но на самом деле, это - object, просто для него компилятор автомтически реализует преобразование типов (и ещё кое-что - см. [документацию](https://learn.microsoft.com/en-us/dotnet/framework...) она хотя и по Framework, но многое из этого есть и в .NET(Core и современном))
    Ответ написан
  • Что значит "Merge remote-tracking branch"?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Слияние происходит в вашей ветке, другие ветки не меняются.
    git pull для branch - это грубо говоря, git fetch для branch (выборка изменений), производимая в специальную ветку отслеживания refs/remotes/origin/branch (в ней список комммитов совпадает с таковым в ветке branch в удаленном репозитории origin) плюс последующий git merge этой ветки отслеживания в вашу ветку branch в репозитории. Вот именно об этом git вам и пишет. Ваша ветка (т.е. указатель на последний коммит в ней) после этого будет включать те коммиты, которые вы получили через git pull + изменения, сделанные в процессе слияния. А ветка в удаленном репозитории (на ее последний известный в вашем репозитории коммит указывает ветка отслеживания) от выполнения git pull не поменяется.
    Ответ написан
    7 комментариев
  • Как изменить шрифт текста созданный через объект вставки?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Либо отредактируйте сам объект, поменяв шрифт в нем, либо вставляйте (Специальной вставкой) не объект, а текст.
    Ответ написан
  • Как отследить что грузит виртуалку?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Используйте Performance Monitor (монитор производительности). Использовать его можно и с другого компьютера в локальной сети. А можно настроить запись данных в файл. Счетчиков там много разных, выбирайте те, кототорые вам сообщат нужные данные.
    Ответ написан
    Комментировать
  • Перенос системы на аппаратный Raid 1?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Перед переносом нужно настроить загрузку драйвера в процессе начальной загрузки системы. Требуется сделать следующее
    1. Установить драйвер для RAID-контроллера
    2. Установить для драйвера тип запуска boot, например - командой sc config имя_драйвера start= boot
    Имя_драйвера можно найти, посмотрев список драйверов командой sc query type= driver (возможно, чтобы увидеть весь список потребуется увеличить размер буфера параметром bufsize= ).
    Ответ написан
    Комментировать