我们最近有一个WCF服务,我们最近从自托管切换到IIS托管。它需要使用Process.Start()启动可执行文件。这在自托管时工作正常,但在IIS中托管时,我们收到错误:
System.ComponentModel.Win32Exception:系统找不到指定的文件
我们在bin目录和应用程序根目录中都有exe(在.svc文件旁边。)但是,它似乎无法找到exe。
任何帮助将不胜感激。谢谢!
编辑:我忘了提到我们正在使用以下代码启动: 的Process.Start( “LeakingWrapper.exe”);
进一步的信息:不幸的是,我们没有将exe切换到dll的选项,因为它正在包装泄漏内存的第三方库。因此,我们必须将其置于自己的流程中,以确保我们长期运行的WCF服务不会泄漏!
答案 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>`