![](/img/trans.png)
[英]DirectoryNotFound error when creating a DirectoryCatalog on a network path 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.