Получить версию сборки .NET для файла aspx - PullRequest
0 голосов
/ 27 мая 2011

Я хочу создать «веб-форму в стиле свойств», которая показывает версию приложения для различных приложений .NET.

Если я знаю URL, например, /someapp/default.aspx, можно ли с помощью отражения выполнитьна этой странице и выясните версию сборки?

Довольно просто найти версию исполняемой сборки, но возможно ли это без изменения другого приложения?

И страница свойств, и другое приложениеработает на том же сервере и в том же пуле приложений.

Обновление: мне повезло с

var url = "~/SomeApp/default.aspx";
var appType = System.Web.Compilation.BuildManager.GetCompiledType(url);

Но навигация по appType для поиска версии файла сборки не совпадаеткаждый раз.

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Не изменяя веб-приложение для предоставления номера версии посредством некоторого поиска на основе URL (простая страница GET является простой, очевидной), вам нужно будет найти способ выяснить, где находится DLLдля веб-приложения с URL.

Если вы можете узнать местоположение DLL, либо по некоторому соглашению (например, / appX / всегда находится в D: \ Sites \ appX \ bin \ appX.dll), либо поконфигурации (вы вручную указываете, где в базе данных находится DLL каждой базы URL), затем вы можете получить версию сборки этой DLL, используя следующий код:

Assembly assembly = Assembly.LoadFrom("MyAssembly.dll");
Version ver = assembly.GetName().Version;

Код взят из этот вопрос

Редактировать: Я немного осмотрелся, и есть несколько API для проверки конфигурации IIS, так что это, безусловно, путь для изучения, если вы пытаетесь получить отURL к месту сборки. Этот вопрос содержит пример получения физического пути, например, из имени приложения / сайта. Microsoft.Web.Administration - это сборка для изучения.

0 голосов
/ 27 мая 2011

Вы можете реализовать собственный HttpModule, поместить его в папку bin каждого приложения, которое вы хотите отслеживать, и добавить зарегистрировать этот модуль в файлы web.config. Например, в этом модуле вы должны обработать запрос, получить всю необходимую информацию и поместить ее в файл cookie ответа.

0 голосов
/ 27 мая 2011

Движок ASP.NET передает только клиенту HTML, javascript и т. Д.В ответе не осталось ничего от сборки, которая может показать, какая версия .net / asp.net запущена приложением, если разработчик на стороне сервера не добавит ее.

При этом вы можете получить некоторую информацию из утилиты по адресу http://uptime.netcraft.com/up/graph, которая предоставит вам некоторую информацию о сервере.Не до версии для сборки, но это настолько близко, насколько я думаю, вы получите.

...