В веб-службе .NET можно определить, была ли сборка загружена внутри веб-службы? Если да, то как бы такая проверка была сделана? И из такой проверки можно определить исходное местоположение сборки?Можно ли определить, была ли сборка загружена внутри веб-службы?
Это длинная история с участием сборок, которые разделяются между несколькими точками ввода нашего приложения на сервере, некоторые из которых отображаются через веб-службы, а другие доступны через более традиционные сокеты TCP, размещенные внутри обычных служб Windows. Также могут быть другие службы Windows, работающие с использованием одних и тех же общих сборок. Потребности в конфигурации каждого из них несколько разные, и вызовы, подобные System.Windows.Forms.Application.ExecutablePath, дают разные результаты в зависимости от того, что такое «хостинг» сборки. Мне нужно надежно вычислить местоположение сборки, чтобы вычислить местоположение файла конфигурации.
В этом сценарии нет параметров Web.config/app.config.
Можно было бы ввести запись в реестр, которая может быть использована для определения того, где находятся приложения (приложения) и все сборки. Но это было бы не так желательно, поскольку приложение (ы) самостоятельно вычисляло местоположения.
EDIT:
Давайте что foo.dll можно назвать как из MyApp.asmx (веб-службы) и MyService.exe (сервис Windows). Есть ли способ определить, было ли приложение MyApp.asmx, которое загрузило файл foo.dll из кода (MyApp.dll)?
Это позволит получить полный список сборок, но не затрагивает основной вопрос: как определить, выполняется ли сборка внутри веб-службы. –
Когда вы говорите «из веб-службы», вы имеете в виду, что проверка происходит из кода, выполняемого в вашем веб-сервисе, или вы являетесь внешним по отношению к веб-службе и хотите спросить упомянутую службу, загрузил ли она данную сборку? –
Из кода, выполняемого в веб-службе. Это может быть дополнительная сборка, которую загрузила веб-служба. –