代码之家  ›  专栏  ›  技术社区  ›  GuyBehindtheGuy

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

  •  5
  • GuyBehindtheGuy  · 技术社区  · 17 年前

    我们有一个wcf服务,我们最近从自托管改为iis托管。它需要使用process.start()启动可执行文件。如果它是自托管的,则可以正常工作,但如果托管在IIS中,则会出现错误:

    system.componentmodel.win32exception:系统找不到指定的文件

    我们在bin目录和应用程序根目录(EX.SVC文件旁边)都有EXE,但是它似乎找不到EXE。

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

    编辑:我忘了提到我们将使用以下代码启动: process.start(“leakingwrapper.exe”);

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

    3 回复  |  直到 13 年前
        1
  •  3
  •   marc_s MisterSmith    17 年前

    你有 aspNetCompatibilityEnabled 设置为真?如果那样的话,你会有一个 HttpContext ,它可以尝试调用如下内容:

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

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

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

    这有帮助吗??

    马克

        2
  •  0
  •   Shiraz Bhaiji    17 年前

    马克的回答可能是正确的。

    但是,也可能是进程找不到文件,因为它没有读取exe文件的权限。

        3
  •  0
  •   Chris - Haddox Technologies    13 年前

    使用web服务的路径 HttpContext 必须在Web服务的web.config中包含以下行

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