簡體   English   中英

如何從IIS托管的WCF服務啟動可執行文件?

[英]How can I launch an executable from an IIS-hosted WCF service?

我們有一個WCF服務,我們最近從自托管切換到IIS托管。 它需要使用Process.Start()啟動可執行文件。 這在自托管時工作正常,但在IIS中托管時,我們收到錯誤:

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

我們在bin目錄和應用程序根目錄中都有exe(在.svc文件旁邊。)但是,它似乎無法找到exe。

任何幫助,將不勝感激。 謝謝!

編輯:我忘了提到我們正在使用以下代碼啟動:Process.Start(“LeakingWrapper.exe”);

更進一步的信息:不幸的是,我們沒有將exe切換到dll的選項,因為它正在包裝泄漏內存的第三方庫。 因此,我們必須將其置於自己的流程中,以確保我們長期運行的WCF服務不會泄漏!

您是否將aspNetCompatibilityEnabled設置設置為true? 在這種情況下,你有一個HttpContext ,它可以嘗試用來調用類似的東西:

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

或者:如果指定EXE的整個路徑,例如,該怎么辦?

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

這些幫助有用??

要使用HttpContext使用Web服務的路徑,必須在Web服務的web.config中包含以下行

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

marc_s答案可能是正確的。

但是,也可能是進程無法找到該文件,因為它沒有讀取exe文件的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM