簡體   English   中英

創建DirectoryCatalog時C#MEF掛起

[英]C# MEF Hangs when creating DirectoryCatalog

我在創建DirectoryCatalog時遇到了MEF掛起的問題。 我有一個Windows窗體應用程序,可以測試MEF功能,並且可以正常運行。 但是,當我在Windows Service中運行相同的代碼時,它掛在了網上:

_catalog = new DirectoryCatalog(assemblyBaseDirectory);


//Here is the full code block. 
var codeBaseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

if (codeBaseDir != null) {
    assemblyBaseDirectory = new Uri(codeBaseDir).AbsolutePath;
    Logger.Info("Creating Directory Catalog for " + assemblyBaseDirectory);
    _catalog = new DirectoryCatalog(assemblyBaseDirectory);
    Logger.Info("Directory Catalog created!");

}

我也不例外。 我輸入了登錄信息,發現第二個Logger.Info行永遠不會被調用。

更新:

當我從服務調用此代碼時,我確定我的路徑沒有返回相同的路徑。 它正在將目錄路徑格式化為“ C:/ Program%20Files / My%20Service”。 我不確定為什么我的Win Forms應用程序沒有這么做。

我認為您首先需要了解的是運行Windows應用程序(作為您自己)與運行Windows服務(作為什么)之間的區別。 此外,Windows服務的啟動目錄是C:\\Windows\\System32 ,這是svchost.exe運行目錄。 使用服務時,我解析啟動路徑的方法是包裝對Uri類的調用以獲取本地路徑:

var path = new Uri(typeof(Something).Assembly.Location).LocalPath;
var catalog = new DirectoryCatalog(path);

您可以驗證服務用戶可以訪問同一路徑嗎?

暫無
暫無

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

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