如何从IIS托管的WCF服务启动可执行文件?

时间:2009-09-18 20:12:40

标签: wcf iis

我们最近有一个WCF服务,我们最近从自托管切换到IIS托管。它需要使用Process.Start()启动可执行文件。这在自托管时工作正常,但在IIS中托管时,我们收到错误:

System.ComponentModel.Win32Exception:系统找不到指定的文件

我们在bin目录和应用程序根目录中都有exe(在.svc文件旁边。)但是,它似乎无法找到exe。

任何帮助将不胜感激。谢谢!

编辑:我忘了提到我们正在使用以下代码启动: 的Process.Start( “LeakingWrapper.exe”);

进一步的信息:不幸的是,我们没有将exe切换到dll的选项,因为它正在包装泄漏内存的第三方库。因此,我们必须将其置于自己的流程中,以确保我们长期运行的WCF服务不会泄漏!

3 个答案:

答案 0 :(得分:3)

您是否将aspNetCompatibilityEnabled设置设为true?在这种情况下,你有一个HttpContext,它可以尝试用来调用类似的东西:

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

或者:如果指定EXE的整个路径,例如

,该怎么办?
Process.Start("C:\yourServiceDir\bin\LeakingWrapper.exe") 

这有帮助吗?

马克

答案 1 :(得分:0)

marc_s回答可能是正确的。

然而,也可能是该进程无法找到该文件,因为它没有读取exe文件的权限。

答案 2 :(得分:0)

要使用HttpContext使用网络服务的路径,您必须在网络服务的web.config中包含以下行

<configuration>
<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 
</configuration>`