Как запустить исполняемый файл из службы WCF, размещенной на IIS? - PullRequest
5 голосов
/ 19 сентября 2009

У нас есть служба WCF, которую мы недавно перешли с хостинга на IIS. Необходимо запустить исполняемый файл, используя Process.Start (). Это прекрасно работает, когда он размещается самостоятельно, но при размещении в IIS мы получаем ошибку:

System.ComponentModel.Win32Exception: система не может найти указанный файл

У нас есть exe-файл как в каталоге bin, так и в корне приложения (рядом с файлом .svc.) Но он не может найти exe-файл.

Любая помощь будет оценена. Спасибо!

РЕДАКТИРОВАТЬ: я забыл упомянуть, что мы запускаем, используя следующий код: Process.Start ( "LeakingWrapper.exe");

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: К сожалению, у нас нет возможности переключить исполняемый файл на dll, поскольку он оборачивает стороннюю библиотеку, которая приводит к утечке памяти. Таким образом, мы должны внедрить его в свой собственный процесс, чтобы наша долго работающая служба WCF не просочилась!

Ответы [ 3 ]

3 голосов
/ 19 сентября 2009

У вас есть для aspNetCompatibilityEnabled значение true? В этом случае у вас будет HttpContext, который можно использовать для вызова чего-то вроде:

string exeFileName = HttpContext.Current.Server.MapPath("~/LeakingWrapper.exe")

Или: что, если вы укажете полный путь к EXE, например,

Process.Start("C:\yourServiceDir\bin\LeakingWrapper.exe") 

Помогает ли это вообще ??

Марк

0 голосов
/ 03 января 2013

Чтобы использовать путь веб-службы с помощью HttpContext, необходимо включить следующую строку в веб-службу веб-службы.

<configuration>
<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 
</configuration>`
0 голосов
/ 19 сентября 2009

marc_s ответ, вероятно, правильный.

Однако, возможно, процесс не может найти файл, потому что у него нет прав на чтение exe-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...