调用DirectoryEntry()后发生System.IO.FileNotFoundException

时间:2011-02-23 21:34:01

标签: c#

我正在调试我刚写的一个小型C#应用程序。该应用程序似乎在我的开发盒上正常运行,但在其他机器上运行时会抛出以下错误(所有机器都安装了Windows 7专业版x64 w / .net 4):

    Application: WolApp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at WolApp.PowerModel..ctor()
   at WolApp.PowerController..ctor()
   at WolApp.Program.Main()

第二个错误是从kernelbase.dll成功完成的,但是,一次只能做一件事......

从堆栈跟踪看来,未处理的异常似乎是在PowerModel构造函数内部抛出的,它只包含以下内容:

public PowerModel() {
entry = new DirectoryEntry();
}

其中entry是PowerModel类的字段。我已经添加了以下try catch块

 public PowerModel() {
            try
            {
                entry = new DirectoryEntry();
            }
            catch (System.IO.FileNotFoundException e)
            {
                string sSource;
                string sLog;
                string sEvent;

                sSource = "WolApp";
                sLog = "Application";
                sEvent = e.Message;
                EventLog.CreateEventSource(sSource,sLog);
                EventLog.WriteEntry(sSource, sEvent);
             }
        }

然而仍然抛出相同的异常(并且仅在外部机器上)?

此外,Windows错误报告的日志中还会显示一条附加消息,如下所示:

 1745074215 
   5 
   CLR20r3 
   Not available 
   0 
   wolapp.exe 
   1.0.0.0 
   4d657be0 
   WolApp 
   1.0.0.0 
   4d657be0 
   3 
   26 
   System.IO.FileNotFoundException 

   C:\Users\username\AppData\Local\Temp\WERC3EF.tmp.WERInternalMetadata.xml 
   C:\Users\username\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_wolapp.exe_62bdee217c82fa90fcdaeb137c1659c897785b85_20036868 

   0 
   ce7dc05c-3f93-11e0-8907-0024e82e58f8 
   0 

3 个答案:

答案 0 :(得分:3)

DirectoryEntrySystem.DirectoryServices命名空间中的一个类,用于处理Active Directory中的条目。

它与磁盘目录中的条目没有任何关系...我很惊讶你会得到一个FileNotFoundExeption ...

(不适用) <击> 或者如果你正在谈论的System.DirectoryServices.DirectoryEntry,那么这个类的类名的非常错误选择!

答案 1 :(得分:1)

我没有看到这个问题,但有一些类似的内容显示here on MSDN,并有修复。

编辑我刚刚重新阅读了您的错误消息,这一点就跳了出来:

CLR20r3 
   Not available 

其他机器是否安装了.Net 2.0? FileNotFoundException听起来无法找到CLR。

This link描述了与您的问题类似的另一个问题(解决方案)。

答案 2 :(得分:0)

也许这不是很相关,但我面临同样的问题,错误信息完全不明确。这是我收到的错误

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name=".NET Runtime" /> 
  <EventID Qualifiers="0">1026</EventID> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2014-03-16T08:38:12.000000000Z" /> 
  <EventRecordID>8249</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>ADCOWDPTEST1</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>Application: Well Abandonment Automation.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileNotFoundException Stack: at WA.Client.RequestList.InitializeComponent() at WA.Client.RequestList..ctor() at WA.Client.Program.Main()</Data> 
  </EventData>
  </Event> 

经过一番挖掘后,我发现我正在引用安装在我的开发机器上但未安装在服务器上的第三方Dll。