получить путь запуска приложения в wcf

In vs2008 (C#):

У меня есть :

  1. основной проект (приложение для Windows)
  2. Библиотека WCF
  3. Хост WCF
  4. Клиент WCF (приложение для Windows)

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

В этой службе мне нужно создать правильную строку подключения с полученным параметром для запроса, и мне нужен мой путь запуска приложения (D:\myProj.dll), чтобы получить доступ к exe-файлу. К сожалению, после использования различных типов кодов, которые возвращают этот путь, именно в момент вызова моей службы я получаю другие пути, которые мне не нужны (myproj, bin\debug или c:\programfiles\visual studio9\common7\IDE)

Вы можете помочь мне ?

Для дополнительной информации я должен сказать, что я добавил этот путь командой для события после сборки моей сервисной библиотеки и клиента.

Пожалуйста, помогите мне получить доступ к этому пути (путь запуска моего проекта -> D:\myProj.dll)

заранее спасибо


person Shima.Y    schedule 21.05.2012    source источник
comment
Итак, вы хотите получить путь запуска client в реализации service — правильно? Это не сработает - НИКОГДА. Клиент и служба используют только общий транспортный провод (сеть) и контракт службы — больше ничего. Служба НЕ МОЖЕТ связаться с клиентом, чтобы что-то получить. Единственное, что вы можете сделать, это иметь параметр для вызова службы, который ваш вызывающий объект заполняет своим путем запуска перед вызовом службы.   -  person marc_s    schedule 22.05.2012
comment
согласен, на основании вашего вопроса неясно, чей путь вы пытаетесь получить. Кроме того, контекст выполнения имеет значение — если вы запускаете из VS, ваш путь будет отличаться от пути запуска из оболочки или из IIS или хоста WCF.   -  person Jason    schedule 22.05.2012


Ответы (1)


из MSDN

path = System.IO.Path.GetDirectoryName(
          System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);

чтобы получить путь к DLL, который использует ваш код:

string fullPath = System.Reflection.Assembly.GetAssembly(typeof(MyClass)).Location;
person Jason    schedule 21.05.2012
comment
этот оператор возвращает bin/debug, который находится не там, где запускается мое приложение. На самом деле мое приложение запускается из d:myProj.dll . как я могу получить рабочий путь моего хост-приложения (мой хост - это служба Windows, если это помогает!)? - person Shima.Y; 22.05.2012
comment
вы запускаете это из VS IDE? - person Jason; 22.05.2012
comment
нет, я просто запускаю myproj.dll! и я хочу именно этот путь. - person Shima.Y; 22.05.2012
comment
Посмотрите на мое редактирование выше, чтобы увидеть, как получить путь к определенной dll, используемой программой. - person Jason; 22.05.2012