Dans un service Web .Net, est-il possible de déterminer si l'assembly a été chargé dans un service Web? Si c'est le cas, comment un tel contrôle serait-il effectué? Et à partir d'un tel contrôle peut-on déterminer l'emplacement d'origine de l'assemblage? Il s'agit d'une longue histoire impliquant des assemblages partagés entre plusieurs points d'entrée de notre application sur un serveur dont certains sont exposés via des services Web et d'autres sont exposés via des sockets TCP plus traditionnels hébergés dans les services Windows normaux. D'autres services Windows peuvent également être exécutés en utilisant les mêmes assemblys partagés. Les besoins de configuration de chacun sont légèrement différents et les appels comme System.Windows.Forms.Application.ExecutablePath donnent des résultats différents en fonction de ce qui "héberge" l'assembly. Je dois pouvoir calculer de manière fiable l'emplacement de l'assemblage pour calculer l'emplacement du fichier de configuration.Est-il possible de déterminer si l'assembly a été chargé dans un service Web?
Web.config/app.config ne sont pas des options dans ce scénario.
Il serait possible de mettre une entrée dans le registre qui pourrait être utilisée pour déterminer où se trouvent la ou les applications et tous les assemblages. Mais ce ne serait pas aussi souhaitable que d'avoir les applications calculer les emplacements eux-mêmes.
EDIT:
Soit que ce foo.dll peut être appelé à la fois MyApp.asmx (le service Web) et MyService.exe (le service Windows). Est-il de toute façon de déterminer si MyApp.asmx était l'application qui a chargé foo.dll du code-behind (MyApp.dll)?
Cela obtiendra la liste complète des assemblys, mais ne répond pas à la question principale: Comment déterminer si l'assembly s'exécute depuis un service Web. –
Lorsque vous dites "à partir d'un service Web", voulez-vous dire que la vérification se produit à partir du code s'exécutant dans votre service Web ou que vous êtes externe au service Web et que vous souhaitez demander à ce service s'il a chargé un assembly? –
À partir du code s'exécutant dans le service Web. Il peut s'agir d'un assembly supplémentaire chargé par le service Web. –