Pavel Karinin, В общем все оказалось очень просто. Не знаю, почему так долго не мог этого найти. В итоге наткнулся на это перебирая все возможные опции конфигурации. Для "левого" кода надо было в корне проекта создать директорию "App_Code", и в конфиге в секции compilation указать поддиректории в codeSubDirectories. https://msdn.microsoft.com/en-us/library/54dwfbb7(...
Pavel Karinin, сейчас по конфигам шарюсь, отпишу как что-нибудь интересное найду. Так ведь тут дело в том, что это не обработчики, а просто код с логикой. Обработчики то нынешняя развертка цепляет как надо, даже ничего не нужно делать.
Или, если можно, ссылку на какую-то документацию по структуре манифестов(или что там) ASP/IIS, потому что я сам нагуглить сумел только простые варианты при локальной разработке, которые и без того прекрасно работают.
Pavel Karinin, Если можно поподробнее. Смотри, я как представляю, IIS при старте компилирует все относящиеся к проекту файлы с кодом, ну и далее уже к скомпилированному обращается (если ошибаюсь, поправь). Соответственно, когда я пытаюсь впихнуть что-то, что не соответствует определению конечного маршрута - у меня получается тупо пропуск. Например я создаю в корне директорию Core -> Utils -> Plurals.cs. Задаю, конечно же, неймспейс, Core.Utils, но не имею возможности к этому коду обратиться откуда то еще, потому что, вероятно, IIS его просто не подхватывает. Если есть какие-то конфиги, где правила сборки задаются, или еще че, это было бы подходящим для меня вариантом.
Pavel Karinin, Ведется на удаленном сервере пока что. Параллельно локальная развертка осуществляется, но пока без достаточных успехов.
Попробую уточнить, чего хочу добиться.
Сейчас в проекте около 100 маршрутов, каждый из которых дублирует уйму логики (даже авторизацию).
Я хочу вынести такие дублирующие куски в классы-хелперы для начала, потом в иерархию наследования и тд. Шутка ли 4к строк в одном маршруте иметь, который в себя включает все от а до я и крупицу реально полезной логики. И так 100 раз повторяется.
То есть, я бы хотел сделать к примеру класс AuthorizationHelper, который был бы доступен с любого маршрута. Но вот никак - они к нему не подтягиваются.
Можно уточнить, в чем собственно проблема? Решения то есть в голове, но что под "максимально эффективно" в данном контексте понимается? Скорость? Если да, то на каком участке? Качество кода и архитектуры? И какого поведения нужно добиться? Как с транзакциями, чтоб ни шагу в сторону пока в обе базы не зайдет, или можно с этим поверменить?
А то, если не зная ничего этого, можно предложить спокойно делать запросы к апи после отдачи ответа пользователю уже.
Alex Wells, все равно проблемы бывают. Сегодня поддерживают - завтра не будут. Само собой это не часто, но и тянуть зависимости по любому поводу не надо. Преценденты были, легаси проект на yii1 было нереально мигрировать на yii2 изза таких вот зависимостей, натасканных кем-то в самом начале разработки. На yii2 был так же прецедент - экстеншн для эластика не поддерживал новую версию, пришлось дописывать самим. К счастью совсем немного. Помоему от темы отклонились, использование сторонних зависимостей или напиание своих велосипедов в тестовых только от предпочтений интервьюера зависят. Только ожидают они одного, а формулировку дают зачастую расплывчатую, чтобы кандидат немного в телепата поиграл.
Newn, Не совсем понял, что именно произошло, но думаю это относится к проблеме с интервалом и таймаутом, о которых я упоминал. Хотя это, конечно, уже выходит за рамки изначального вопроса. Там дело вот в чем - пока раз в 3 секунды на протяжении 18 секунд (15 + 3 от первого) выполняется первый запрос и получает ошибку - он каждый раз создает новый таймаут. И того за все время выполнения их может быть например 6, и они все выполнятся так же один за другим, когда их время придет (через 15 секунд после создания, у каждого свое).
Чтобы избежать этого нужно, как простой вариант, завести переменную timerId (положить рядом с interval), для верности можно по умолчанию установить значение например в null. При data.result == 'error' првоерить, является ли timerId нулом. Если да - то стартануть таймаут и его айдишник записать в timerId. Если нет - то, соответственно, не делать этого.
Дима Шишкин, в шторме при создании подключения есть поле по типу root directory или подобное, посмотреть сейчас не могу к сожалению. Если там указано, к примеру, /var, то после подключения за пределы директории var уже не выйдешь. Соответственно если указана директория без файлов и других директорий в ней - так и будет в шторме отображаться.
</div>
Я так понимаю перед about_text.