Получить расположение (путь) сборки 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 "Копировать в выходной каталог", который копирует каталог, а также файлы (которые я хотел для своего случая, в противном случае используйте ресурсы в качестве ссылки в проекте).

Другие вопросы по тегам