Ответы пользователя по тегу ASP.NET
  • Как выбрать нужный ClaimIdentity из ClaimPrincipal, если их несколько штук?

    Ну так а мы откуда знаем, какие claims вам нужны? Всё зависит от вашей модели безопасности в приложении - каким образом вы авторизуете ваших пользователей (или что там у вас) на соответствующие действия.

    Например в простом случае, если у вас модель, основанная на ролях, то вам вероятно хватит клэима "роль", для которого даже helper-метод сделан: IsInRole.

    Сейчас вы задали вопрос в духе "у меня есть запись в базе данных, какие поля мне из неё нужно взять?". ClaimsPrincipal в общем-то похож на такую "запись в базе" - набор фактов о каком-то принципале (например, о пользователе), с бонусом в виде того, что мы тем или иным способом убедились в подлинности этих фактов, а сами факты более-менее стандартизированы для многих практических задач.
    Ответ написан
    1 комментарий
  • Почему app.Use вызывается несколько раз(ASP.NET Core)?

    Nipheris
    @Nipheris Куратор тега C#
    А сколько запросов летит в Хроме в табе Network? Точно один? Думаю что два. Ставлю на favicon.
    Ответ написан
    9 комментариев
  • Как обрабатывать записи бд в реальном времени ASP.NET Core?

    Nipheris
    @Nipheris Куратор тега C#
    Почитайте про вебсокеты. Вам нужно будет держать коннекты со страниц в браузере на ваш сервер, и посылать обновления всем клиентам, которые "подписаны" на определённые записи при изменении этих самых записей.

    Задача не такая тривиальная как кажется - нужно понимать, как полученное решение будет масштабироваться, и как будет ограничиваться объём рассылаемых данных. И вообще, "было бы здорово" - это недостаточный аргумент, такую задачу нужно ставить осознанно, понимая грядущие затраты и издержки.

    Ну и посмотрите ещё на SignalR, как на более комплексное решение (если уверены, что для вас это не overkill - в целях обучения может лучше голые вебсокеты).
    Ответ написан
    6 комментариев
  • Чем работать с БД кроме Entity FrameWork в ASP.NET MVC?

    ADO.NET - основная технология доступа к реляционным данным в дотнете примерно с момента его появления.
    EF да и пожалуй чуть менее чем все дотнетовские ORM (тот же NHibernate) работают поверх ADO.NET, это хорошо видно например в том, что можно передавать ado-шный объект подключения.
    Connection strings used by the Entity Framework contain information used to connect to the underlying ADO.NET data provider that supports the Entity Framework.

    https://docs.microsoft.com/ru-ru/dotnet/framework/...

    так что вы должны чётко понимать, что EF оборачивает более низкоуровневый ADO.NET и вы можете пользоваться им напрямую.
    Ответ написан
    Комментировать
  • Часто ли вы используете интерфейсы?

    Nipheris
    @Nipheris Куратор тега C#
    Часто ли вы используете интерфейсы?

    Посмотрим, что у нас в стандартной библиотеке:

    Со всеми этими интерфейсами дотнет разработчик сталкивается каждый день. Либо пользуется ими, либо реализует их. Например, тот же yield return работает благодаря IEnumerable. Весь LINQ основан на IEnumerable и IQueryable.

    Часто ли у вас было что ваши репозитории окруженные интерфейсами используют MSSQL, и есть еще такие же репозитории но уже использующие к примеру MongoDB, и где нито вы подменяете одно другим?

    Да, часто. Например, архитектура ADO.NET позволяет написать приложение так, что оно вообще не будет зависеть от используемого драйвера БД, и конкретный ado.net драйвер можно указать в конфиг-файле приложения. Т.е. конкретную БД может выбрать ПОЛЬЗОВАТЕЛЬ, а не разработчик. Более того, если под какую-то БД драйвера еще нет, а позже он появится, то его можно будет задействовать без перекомпиляции приложения. Только потому, что используются интерфейсы.
    Ответ написан
    Комментировать
  • Как починить проект в visual studio 2015?

    Удалите папку .vs рядом с солюшеном и user-файл рядом с проектом, если такой есть.
    Ответ написан
    Комментировать
  • Как запрашивать аутентификацию для каждого запроса в WEB API?

    1. Аутентификация выполняется однократно. Это довольно сложный, потенциально многоэтапный процесс. Делать аутентификацию при каждом запросе - 100% неверное решение, этим просто невозможно будет пользоваться.
    2. Т.к. аутентификация выполняется однократно, то в качестве метки для всех запросов от некоторого аутентифицированного юзера используется некий токен. Это может быть ID сессии, приходящий в куках, это может быть и JWT, посылаемый в хереде Authorization. Вот этот токен и нужно проверять каждый раз. Суть этого токена в том, что он а) так или иначе временный (хотя может продлеваться тем или иным образом); б) не связан с конкретным методом аутентификации. Т.е. он представляет собой конкретную успешно проведенную аутентификацию. С некоторой натяжкой это можно назвать "сессией". Проверять этот токен ГОРАЗДО легче, чем делать новую аутентификацию - либо просто нужно найти сессию в списке (ну и проверить IP на всякий случай) в случае ID сессии, либо проверить валидность подписи в случае JWT токена. Как это делать - зависит от конкретной реализации этого токена, если скажете что используете - попробую подсказать, что надо проверять.
    3. Насчёт фильтров авторизации - уточните версию ASP.NET, тогда поглядим.
    Ответ написан
    Комментировать
  • В чем разница между C#, .NET, ASP.NET, WEB Forms?

    Nipheris
    @Nipheris Куратор тега C#
    C# это Java.
    .NET это CLR и различные библиотеки (какие - зависит от формы поставки .NET, например .NET Framework, Silverlight или .NET Core).
    CLR это JVM.
    CIL это байткод Джавы.
    ASP.NET MVC это Spring.
    ASP.NET Web Forms это тоже веб-фреймворк, только с другой идеологией (более старый, чем MVC).

    Что для чего нужно и что за умное словечко "платформа"?

    Непонятен контекст.
    Ответ написан
    5 комментариев
  • Что использовать для быстрой генерации Excel файла?

    Nipheris
    @Nipheris Куратор тега C#
    Если не считать вот этого требования:
    сразу отдавать его назад пользователю, без сохранений на хард

    то однозначно EPPlus (в нюгете: EPPlus ), врядли вы что-то лучше найдете, не требующее наличия установленного Офиса. Насчёт "сразу отдавать пользователю" - надо посмотреть, умеет ли писать воркбук в Стрим, а не в файл.

    UPD: судя по конструктору ExcelPackage(Stream newStream), умеет. Так что пишите в МемориСтрим, и отдавайте юзеру. Не забудьте Content-Type нужный проставить)
    Ответ написан
    3 комментария
  • Каков принцип работы SPA приложений в ASP.NET Core?

    Да, правильно. Добавлю, что т.к. теперь ваше WebAPI это основной поставщик данных на клиент (в браузер), то в идеальном случае вам вообще больше не нужны View - достаточно вернуть статику (скрипты и основую страницу приложения) с веб-сервера. Т.е. в идеальном SPA ASP.NET остается только для WebAPI.
    Ответ написан
    Комментировать
  • Как сделать авторизацию на LDAP Active Directory? Как это вообще работает?

    > по заданию я должен написать свое клиент-серверное приложение по HTTP или TCP/IP
    Интересное задание. Так с помощью чего части приложения общаться должны? Толстый или тонкий клиент нужен?

    Авторизация в ASP.NET делается с помощью identity provider-ов.

    Гуглил типа "ldap get authorized user"

    Сложно придумать менее удачный запрос для поиска. Вам зачем "получать авторизованного пользователя"?? Вам нужно выполнять аутентификацию через ldap.

    www.nuget.org/packages/Microsoft.IdentityModel.Cli... поглядите что-ли, даже не знаю какой из вариантов вам предложить.
    Ответ написан
    Комментировать
  • Переход из backend во frontend?

    Nipheris
    @Nipheris Куратор тега C#
    в этом вопросе я вообще не силен

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

    Если для вас проблема то, что вы указали,
    взаимодействие с бд, да и вообще вся работа с бд

    то вам еще рановато говорить, что вы "пишете на asp.net". Фреймворк вы конечно может и достаточно знаете, но пока что это не инструмент в ваших руках. Почему? А кому сегодня нужен бэкенд на C# без базы данных? Распределенные вычисления? Ну может быть, но таких проектов единицы. Массово это LOB-приложения, и там всё начинается с БД.

    Поэтому, сначала доучите то, что уже начали. Или просто отдохните, если устали, судя по количеству вопросов от вас вы довольно серьезно взялись за тему. Собственно, к чему такая спешка? Нужно срочно работу найти?
    Ответ написан
    Комментировать
  • Как синхронизировать данные на сайте ASP.NET и в локальной базе приложения?

    Посмотрите Change Data Capture.

    А вообще, почему требование именно в синхронизации? Может, стоит смотреть в одну и ту же базу в обоих случаях?
    Ответ написан
    6 комментариев
  • Паттерн Repository и Active Record?

    Nipheris
    @Nipheris Куратор тега C#
    Репозиторий - это хранилище сразу для всех объектов определенного класса. Методы репозитория, добавляющие или удаляющие объект, принимают этот объект в качестве параметра. Методы репозитория, отвечающие за поиск, возвращают экземпляры найденных объектов. У вас один экземпляр репозитория для всех объектов, которые он может хранить (как правило - один экземляр для всех объектов какого-то одного класса или иерархии классов).

    В паттерне Active Record объект умеет сохранять сам себя. Иными словами, ответственность за вопросы хранения лежит на самом объекте.
    Ответ написан
    Комментировать
  • Какие есть архитектурные паттерны без ORM для ASP.NET MVC?

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

    Вы указали, что уже используете Репозиторий. Раз так, то у вас и так должно быть все хорошо с абстрагированием от слоя получения данных - вы можете реализовать репозиторий так, как вам нужно, в том числе и SQL-запросами.

    Даже если вы не хотите ORM целиком, вы возможно захотите часть из её функционала реализовать самостоятельно для удобства. Например, вы вероятно все-таки захотите иметь Identity Map, что ваши объекты (которые будет отдавать ваш Репозиторий, реализованный ручными SQL-запросами) действительно были объектами, а не записями. Или даже какой-нибудь Lazy Load.

    В общем, сейчас создаётся ощущение, что вы не задачу решаете, а пытаетесь собрать рекордную коллекцию паттернов.
    Ответ написан
    Комментировать
  • Зачем используют интерфейсы при проектировании архитектуры приложения?

    Nipheris
    @Nipheris Куратор тега C#
    Я думаю интерфейсы в этом примере применяются как и везде - для контроля за связями между компонентами крупной системы и для обеспечения заменяемости компонент.

    Раз уж так, разрешите мне прилинковать старый ответ: Какова роль интерфейсов в ООП?
    Ответ написан
    Комментировать
  • Современные тенденции разработки на C#?

    Nipheris
    @Nipheris Куратор тега C#
    Общие тенденции сейчас такие - пользоваться NuGet по-нормальному (т.е. как в DNX, а не сбоку прилепленным, как в классических C# проектах), наконец по-нормальному поддерживать все платформы (как должно было быть изначально), т.е. хотя бы Линух и Фряху помимо Винды, не бояться portable-версий библиотек.

    Более предметно можно поговорить, если вы точно скажете, чем интересуетесь. Непонятно, то ли вы про тенденции в языке хотите узнать, то ли про тендеции платформы дотнет в целом.

    MS пытается сейчас сделать весь дотнет и конкретно C# более легковесными. По .net core и asp.net core это ясно видно - альтернатива большому полноразмерному .net framework, asp.net теперь распространяется через NuGet, новые Roslyn-компиляторы и DNX позволяют пользоваться C# как другими популярными языками вроде Питона и Руби, например дают возможность не компилировать весь проект заранее, а делать это на ходу, по-требованию и при изменении файлов исходников. Entity Framework старается не отставать, т.к. это сейчас рекомендуемый подход для доступа к данным в БД. Не так давно вроде впилили поддержку документных баз (не знаю правда зачем :) ) работают в направлении поддержки NoSQL-баз (поправил Роман ).

    К чему вы упомянули dependency injection не совсем понятно, это паттерны, полезные в любом языке и в любом проекте.
    Ответ написан
  • На чем быстрее парсить?

    Nipheris
    @Nipheris Куратор тега C#
    HtmlAgilityPack либо же использовать Регулярные выражения?

    stackoverflow.com/a/1732454/3927447

    Этим все сказано.
    Ответ написан
    1 комментарий
  • Какую литература почитать по asp.net core?

    Почему ж вы не указали ту книгу, которую нашли?
    Чем она вас не устроила?
    На каком она языке?
    А на каком хотите вы?

    Чёрт, слишком много вопросов в ответе).
    Изучать стоит, сейчас там кардинально уже ничего не изменится, система в целом уже спроектирована, я думаю сейчас чинятся только баги. Даже если пара классов пропадёт или пара новых появится, я думаю шока у вас быть не должно.
    Когда выйдет в продакшн, вы уже будете готовы работать с ним, это ж хорошо.
    Ответ написан
    Комментировать
  • Как писать тесты в asp.net mvc не затрагивая Entity Framework?

    Nipheris
    @Nipheris Куратор тега C#
    Как мокать EF не используя не нужный слой абстракции с репозиторями таким образом чтобы весь функционал EF оставался рабочим?

    Может, не такой он уж он не нужный? Репозиторий нужен в том числе для того, чтобы иметь четкий список методов для тестирования. Я сейчас вообще не могу толком понять, что вы тестируете.
    Ответ написан
    Комментировать