Почему один из моих файлов `Global.asax.cs` в моем ASP. net решении с двумя запускаемыми проектами не вызывается? - PullRequest
0 голосов
/ 15 января 2020

В Visual Studio (Professional 2017) решение у меня есть несколько проектов , два из которых являются запускаемыми проектами, UI и API. Любопытно, что API\Global.asax.cs, похоже, не выполняется, хотя на самом деле оба запускаемых проекта могут быть запущены для отладки. Я уверен в этом, поскольку при нажатии зеленой стрелки Debug открываются два браузера windows, работают и пользовательский интерфейс, и интерфейс API.

Существует два различных файла Global.asax.cs, по одному на каждый стартап-проект (разумный ли это дизайн, я не знаю - я принял решение таким образом). В рамках API-интерфейса точки останова не работают, более конкретно VS говорит:

В данный момент точка останова не будет достигнута. Копия Global.asax.cs была найдена в UI.dll, но текущий исходный код отличается от версии, встроенной в UI.dll.

Чтобы разрешить эту точку останова, нажмите правой кнопкой мыши на Точка останова, выберите «Условия ...» или «Настройка ...». Затем выполните chcoose 'Location', 'Allow для исходного кода, отличного от исходного.'

Чтобы разрешить это для всех точек останова, отключите опцию «Обязательные исходные файлы для точного соответствия исходной версии» в разделе «Инструменты, Параметры» , Отладка, Общее.

Полное сообщение при наведении на точку останова выглядит следующим образом: full error message screen shot

После последнего предложения ничего не изменилось , Что касается первого предложения, у меня нет вариантов выбора в контекстном меню в разделе Conditions.

. Я не могу много спрашивать об архитектуре решения, поэтому я прошу здесь о помощи: я Я предполагаю, что сообщение об ошибке также означает, что файл API/Global.asax.cs вообще не читается, или это неверный вывод?

Что еще более важно: Как мне убедиться, что API\Global.asax.cs читается / выполняется ? Иными словами: когда он должен выполняться в режиме отладки? У меня сложилось впечатление, что он выполняется время от времени, так как иногда я вижу отладочный вывод в моем окне VS- Output - мне не удавалось угадать, когда он будет выполнен.

Редактировать: Дополнительная информация

На страницах свойств решения (щелкните правой кнопкой мыши решение и выберите Свойства ), есть опция Несколько запускаемых проектов выбрано. Проект API находится в списке до UI.

Под Зависимость проекта указано, что проект API зависит от других проектов, но не от проекта UI. Другие проекты также имеют некоторые взаимозависимости, но ни один из них не зависит от проекта UI. Проект UI также не зависит ни от какого другого проекта.

Ссылки

1 Ответ

2 голосов
/ 15 января 2020

В любом веб-приложении ASP. NET может быть только один файл Global.asax (с кодом или без него). Один из файлов Global.asax будет перезаписывать другой, если оба проекта развернуты в одной и той же папке, и тот, который победит, будет указывать выигрышный тип запуска, который подключается к событиям экземпляра Application:

 <%@ Application Codebehind="Global.asax.cs" Inherits="MyProject.MvcApplication" Language="C#" %>

Единственный способ иметь два - это два отдельных веб-приложения (одно может быть в дочерней папке, при условии, что оно - в IIS - настроено как собственное веб-приложение и, таким образом, запускает собственный домен приложений, если в том же IIS App Pool или иным способом в своем собственном процессе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...