Я бы рекомендовал использовать понимание приложения с функциями Azure. Информация о приложении имеет более глубокую интеграцию с функциями Azure и является рекомендуемым способом настройки Google Analytics для вашего приложения. Есть ли конкретная причина, по которой вы хотите настроить Log Analytics вместо Application Insights?
Если это имеет значение я использую метод из того учебного руководства в текущем проекте, и это работает очень хорошо.
То, что можно также сделать, если это - данные, которые несколько статичны (как меню, которое не изменяется очень), должно поместить объект на кэш, таким образом, базу данных не называют для каждой инициализации контроллера.
Основная страница уже имеет доступ к ViewData. Если Вы хотите доступ со строгим контролем типов к нему, необходимо сделать две вещи:
Имейте Вас, основная страница наследовала от универсального ViewMasterPage <> класс:
" %>Я не вполне получаю Вашу проблему...
Проблемой, на которую я смотрю, является то, что, если я помещаю пользовательский элемент управления в свой masterpage, который полагается на ViewData, я должен НЕОДНОКРАТНО включать тот ViewData для каждой страницы, которая использует, сказал masterpage.
Хорошо да..., конечно, Вы делаете. Если у Вас есть usercontrol на Вашей основной странице затем, конечно, Вы оказываетесь перед необходимостью передавать необходимые данные для этого usercontrol для каждого действия и представления, которое использует это masterpage.
Это не похоже на Вас, должны повторить себя, если Вы просто наследовались основному контроллеру.
Действительно ли Вашей проблемой является то, что некоторые контроллеры имеют действия, что и сделайте и не называйте представления, которые происходят из того конкретного masterpage? Поэтому при реализации основного контроллера действия, которые не используют тот конкретный masterpage, будут все еще иметь видеоданные для него...? (Если все, что имеет смысл ;-)
Другой пример, конечно же, Rake , система сборки Ruby. Что делает DSL «хорошим», на мой взгляд:
I usually use an abstract controller class for my MasterPage, it is the best solution, because the MasterPage is like an "abstract view". But I override the MasgerPageController View() method to include the viewdata.
protected override ViewResult View(string viewName, string masterName, object model)
{
this.ViewData["menu"] = this.PagesRepository.GetPublishPages();
return base.View(viewName, masterName, model);
}
Я думаю, что предложенное решение работает, но не является идеальным. Если мы поместим код в конструктор BaseController, он будет вызываться даже для методов Action, у которых нет MasterPages (например, методы Post и методы Ajax).
Я думаю, что лучшим решением (не идеальным) является вызов метода Html.Action на главной странице.