Получить расположение (путь) сборки SvcHost с помощью сборки SvcImplementation
У меня Windows 8.1 x64, Visual Studio 2012 x86, IIS 8.5.
У меня есть проект Wcf Service Host (содержит файл SVC)
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceImplementation.MyService" %>
У меня есть проект внедрения Wcf Service.
Сервис Wcf, размещенный в IIS
У меня есть 2 сборки: WcfService.Host.dll и WcfServiceImplementation.dll
Этот код в WcfServiceImplementation.dll:
1)
Assembly.GetEntryAssembly()
становится нулевым
2)
Assembly.GetExecutingAssembly()
получает WcfServiceImplementation.
3)
Assembly.GetCallingAssembly()
получает System.ServiceModel.
Как можно получить расположение сборки Service.Host программно в коде, который выполняет сборку WcfServiceImplementation?
В целом, для любой службы или веб-приложения Wcf, как получить "основную сборку" (узел службы wcf, веб-приложение)?
Мой след (журнал):
ProcessName: w3wp
Is64BitOperatingSystem: True
Is64BitProcess: True
SystemConfigurationFile: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config
ConfigurationFile: C:\TFS\Tests\WcfService\web.config
MainModule.FileName: c:\windows\system32\inetsrv\w3wp.exe
MainModule.ModuleName: w3wp.exe
BaseDirectory: C:\TFS\Tests\WcfService\
ApplicationBase: C:\TFS\Tests\WcfService\
FriendlyName: /LM/W3SVC/2/ROOT-5-130404032112324911
ApplicationName: c36153ea
Code in WcfServiceImplementation assembly:
Assembly.GetEntryAssembly():
GetAssemblyExtendedData. Assembly null
Assembly.GetExecutingAssembly():
Location: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\2090c609\c36153ea\assembly\dl3\92d3ec19\b0fa1582_c649cf01\WcfServiceImplementation.dll
ProcessorArchitecture: MSIL
Assembly.GetCallingAssembly():
Location: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel\v4.0_4.0.0.0__b77a5c561934e089\System.ServiceModel.dll
ProcessorArchitecture: MSIL
Предложения?
1 ответ
Этот работал для меня в службе WCF:
AppDomain.CurrentDomain.RelativeSearchPath
Например:
string certFilePath = AppDomain.CurrentDomain.RelativeSearchPath + "\" + CERTIFICATES_DIRECTORY_NAME + "\" + CERTIFICATE_FILE_NAME;
Вы можете видеть, что файлы копируются в подкаталог, и эти файлы в решении помечены как build-action "Копировать в выходной каталог", который копирует каталог, а также файлы (которые я хотел для своего случая, в противном случае используйте ресурсы в качестве ссылки в проекте).