Задать вопрос
  • Что случилось с Exchange 2019 - ошибка MSExchangeServicesAppPool?

    @mvv-rus
    Земля налетела на небесную ось...

    Роман Безруков , судя по логам, Земля - на месте, но что-то там случилось с встроенным антивирусом. Если перезагрузка помогла, можно, думаю, особо пока не заморачиваться.
  • Как сделать Mock на приватное поле типа Dictionary для Integration tests или как можно проверить, что его метод был вызван?

    @mvv-rus
    Под фабрикой вы имеете в виду паттерн проектирования Абстрактная фабрика?

    Если вы мыслите паттернами, то тогда уж, скорее, "Фабричный метод". А вообще я имею в виду один из многочисленных в .NET интерфейсов вида interface IXXXFactory { XXX Create(); } В конструкторе определяете параметр как интерфейс, а передаёте в него ту реализацию, которая вам нужна. Если можно использовать DI, то там вообще достаточно один раз зарегистрировать для этой фабрики (интерфейса) нужную реализацию, а дальше можно не париться совсем.

    Статья: Осторожно: ICacheEntry
  • Как заставить Windows Server 2019 сохранять сеанс даже после отключения?

    @mvv-rus
    закрываю окно, сам сервер работает

    ArtyomSafren, а что с сессией RDP при этом? При закрытии окна подключени она должна переходить в отсоединенное состояние (Disconnected), а если она пробудет отсоединенной достаточно долго (сколько - это настраивается, а по умолчанию - зависит от версии Windows) будет находиться в этом состоянии, то ее сервер может завершить по таймауту, вместе с вашей программой, и это - куда более вероятная причина завершения программы.
    Проверьте, что сервер эту сессию в отсоединенном состоянии у вас не завершает. Например, запустите параллельно с вашей программой на сервере Блокнот, а после повторного подключения проверьте, что он все еще работает (а вообще-то, лучше проверять через консоль управления сессиями, но вам, наверное, это будет сложно).
    PS И не верьте слухам - даже если они пишутся в Интернете.
  • Как сменить привязку DNS к старому IP?

    @mvv-rus
    ни один из IP адресов этого контроллера домена не сопостовляется с настроенным сайтом

    iwnch, если не будете ставить что-то типа Exchange - не критично. Если мозолит глаза - добавьте эту подсеть в тот сайт, в котором находится КД .
  • Как сменить привязку DNS к старому IP?

    @mvv-rus
    при этом dcdiag стал проходить, вроде как.

    Вроде как? И ни об одном непройденной проверке не пишет? Перезапустите службу Сетевой вход в систему (Netlogon) и посмотрите, что напишет dcdiag после этого. Ну, и возможность добавить ПК в домен после этого проверьте заново.
    PS Я подозреваю, что ваш КД не объявляет себя таковым. Возможно, это временное явление из-за того, что Netlogon не успел обновить соответствующие записи. Проверка: nltest /dsgetdc имя.вашего.домена (кстати, вы его не везде затёрли).
    PPS И ещё один момент. ЕМНИП Вы перенесли (собирались, то есть) один КД из нескольких в домене. Если так, то вычистили ли вы остальные КД из домена. Если нет, то невозможность репликации будет мешать.
  • Как сменить привязку DNS к старому IP?

    @mvv-rus
    iwnch, если проверка Connectivity не пройдена, то дальше смотреть бесполезно, пока вы не устраните проблему с записями DNS - dcdiag ничего не покажет. Для начала проверьте настройки DNS на самом КД: в нем должен быть указан только он. Далее если с настройками там все правильно, а картина останется та же, проще всего будет перезагрзузить этот КД и посмотреть глазами на наличие ошибок или предупреждений в журналах Система и Служба каталогов.
  • Как решить проблему с загрузка файлов на C#?

    @mvv-rus
    потому что гугл диск не даёт скачивать большие файлы через прямую ссылку. Пробывал все, маил, яндекс, даже сайт пробывал сделать,но все не работает.

    Если пробовали всё - mail.ru, yandex, свой сайт - то дело, наверное, не в Google, а в том чем вы скачиваете. Ограничение на размер может быть там. А чем вы скачиваете - это для нас пока что загадка, и без вашей помощи (или телепатии) мы ее решить не сможем.
  • Как добавить LUN СХД напрямую в виртуальную машину?

    @mvv-rus
    Задача основная этот раздел для Backup иметь всегда в сети

    Я правильно понял, что вам надо, чтобы этот раздел всегда был доступен как общая папка в сети Microsoft?
    Если так, то вам вообще не нужна VM - достаточно в кластере поднять масштабируемый файловый сервер и сделать диск общим через него. В кластер, я гляжу, этот диск уже добавлен правильным образом - как CSV (общий том кластера).

    Или на этой виртуалке должно выполняться какое-то приложение для бэкапа?
  • Как уменьшить время на удаление (30 дней) после перемещения ящика Exchange в другую базу?

    @mvv-rus
    Старая версия ящика в БД не отъедает whitespace (котрый есть потеря на фрагментацию), а является хранящимся в БД объектом. Выполните команду Get-MailboxStatistics -Database в EMS - и убедитесь в этом сами. После этого посмотрите GUID удаленного п/я и удалите его окончательно командой Remove-StoreMailbox. Если таких п/я много, можно окончательно удалить их из базы все, в документации на Remove-StoreMailbox есть пример, как это сделать (только он не для помеченных удаленными, а для отсоединеных п/я, но поменять там несложно).
  • Есть ли такая архитектура?

    @mvv-rus
    Ещё раз. UoW - это вообще не слой архитектуры, а прием проектирования (он же "паттерн"), согласно которого работа с данными идет методом Фамусова: "Подписано, так с плеч долой".
    EF реализует UoW: вы создаете контекст, вносите изменения в экземпляры сущностей из него, говорите контексту SaveChanges (или SaveChangesAsync) и очищаете его (если он берется как сервис с временем Scoped из контейнера - его контейнер очистит). Раз вас реализация сейчас и навсегда устраивает - не городите ненужные слои.
    И вообще, перестаньте молиться на теорию а исходите из своей задачи и своего здравого смысла. Как-то так.
  • Как автоматизировать создание аккаунтов?

    @mvv-rus
    Проще всего это делать не на C#, а наPowershell: связкой Import-Csv и New-Mailbox. Если поискать в интернетах, то там и скрипты найти можно, если не готовые, то годные в качестве основы.

    Вам точно обязательно нужен C#?
  • Как реализовать TcpLister, который будет ожидать запроса?

    @mvv-rus
    Nik Faraday, у васт там для ожидания есть await. Какое ещё ожидание вам нужно?

    PS А мой ответ, которым вы отвечали предыдущим комментарием, вообще был не вам.
  • Как реализовать TcpLister, который будет ожидать запроса?

    @mvv-rus
    не нравится конкретно while(true) и рекурсивный вызов метода.

    Nik Faraday, в упор не вижу тут while(true)- вижу (в первом варианте) while (!stoppingToken.IsCancellationRequested). Я куда-то не туда смотрю?

    Если вас устраивает, что задача, выполняющая HandleClientAsync будет брошена на произвол судьбы, можно использовать оба варианта. Если вы хотите узнать, чем она закончилась - надо делать по-друому.

    Во втором варианте рекурсия в норме не возникает: вложенный вызов AcceptClientAsync() по факту возвращается сразу после начала await, и рекурсивный вызов породить способен, только если AcceptTcpClientAsync срабатывает синхронно, а такое - редкость (правда если ваш сервер начнут DDoSить...). Иначе вложенный вызов прозойдет уже в, скорее всего, в потоке из пула, и будет использоваться его стек, т.к. в ExecutionContext стек не входит. Но вот выхода из этого, неявного, цикла прослушивания, действительно, нет. Стоит добавить.

    В TcpListener.AcceptTcpClientAsync в любом случае стоит передать CancellationToken, используемый для завершения приложения (напримере, IHostApplicationLifetime.Stopping), чтобы он тоже завершился без задержек при завершении приложения.
  • Как реализовать TcpLister, который будет ожидать запроса?

    @mvv-rus
    Сделать фоновый сервер в ASP NET проекте - не очень хорошая идея.

    Sergey В., это в ASP.NET Core до 3.0, пока приложение использовало Web Host, могло быть не очень хорошей идеей (и то, справлялись, и у MS даже было документировано, как это сделать). После же перехода на Generic Host в 3.0 фоновые процессы стали штатной частью приложения (собственно, само веб-приложение именно так устроено). И автор вопроса эту, совершенно штатную, возможность как раз использует, с помощью ппредназначенного кдля этого класса BackgroundService.
    Про какой веб-сервер вы гоорите - непонятно: по умолчанию приложение ASP.NET Core - сам себе веб-сервер (по умолчанию используется Kestrel). А если кто-то вдруг захочет убить ваш процесс (оркестратор?) - настройте этого "кого-то", чтобы не своевольничал. Кстати, оснований считать такой процесс зависшим нет: на всякие пробы здоровья по HTTP ему отвечать ничто не помешает.
  • Консоль выдаёт ошибку в коде хотя там её явно не видно, как можно решить?

    @mvv-rus
    На стр. 54 внимания не обращайте, это всего лишь часть стека вызовов, который привел к ошибке. Сосредоточьтесь на последнем вызове из вашего кода, приведшем к ошибке - стр.143 и выясняте, почему так получилось.
  • Проблема с жёстким диском?

    @mvv-rus
    из винды нельзя что-то полностью вырезать,

    Wispik, не распространяйте невежество, а откройте для себя DISM: современная Windows (начиная ещё с Vista) состоит из пакетов и DISM - менеджер их.
  • Почему в истории начал появляться коммит слияния?

    @mvv-rus
    , ну если удалю update и сделаю новую на основе main.

    Dyikot, а изменений в update вам не жалко? Если жалко - просто сделайте git rebase: он вам и update на основе main создаст, и изменения сохранит. Ну, а если не жалко - можно и так сделать.
  • Почему в истории начал появляться коммит слияния?

    @mvv-rus
    "Эту" - это какую? Которая "на всякий случай" - удалить. Эти ваши commit отмены и отмены отмены будут удалены при следуюшей сборке мусора в репозитории. А с update делайте то, что вы обычно делаете, она тут не при делах.

    PS А вообще, ветка - это указатель на голову цепочки commit'ов и ничего более.
    PPS Если чего-то опасаетесь - сделайте копию папки .git, в случае чего - вернете обратно.
  • Как настроить web api для передачи куков с React клиента?

    @mvv-rus
    Ничего не понял: что за HttpSession и причем оно тут? В C# вы работаете с сессией с интерфейсом ISession - вот и пишите про него.

    Ответьте на вопросы, которые я задал раньше. Значение c ключом Id в сессии - оно откуда у вас должно взяться? Вы посмотрели, там, где вы его устанавливаете, что свойство Id интерфейса ISession совпадает там и в вашем фильтре авторизации? Если совпадает, то на куку сессии в браузере вообще можете не смотреть: там все работает.

    PS Про вызов метода CommitAsync: можете не заморачиваться. Я посмотрел исходник: обработчик в конвейере middleware, который устанавливает сессию, вызывает его сам.