【问题标题】:File Not Found Exception thrown for XML file possibly caused by Outlook为 XML 文件引发的 File Not Found 异常可能由 Outlook 引起
【发布时间】:2010-09-21 10:19:01
【问题描述】:

当 Outlook 调用我的应用程序时,我收到了一个找不到文件的异常。当电子邮件保存到计算机时调用该应用程序,并对保存的消息执行操作。

我的应用程序使用 XML 文件来存储可配置的设置,但是当 Outlook 调用以执行应用程序时找不到该文件。如果我手动运行程序,那么它工作正常。

关于异常的有趣之处在于:

System.IO.FileNotFoundException: 找不到文件 'C:\Program Files\Common Files\System\MSMAPI\1033\settingsOpened.xml'。

为什么 Outlook 认为文件在此处?这不是文件的路径,但我确定与 Outlook 有关。我在代码中引用路径的方式只是:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("settingsOpened.xml");

文件与 .exe 位于同一文件夹中。我也不想硬编码 XML 文件的完整路径。

任何帮助将不胜感激。

谢谢, 罗斯

【问题讨论】:

    标签: c# xml outlook filenotfoundexception


    【解决方案1】:

    从显示的代码中,我假设它将当前路径作为查找文件的位置。当前路径有点不可预测,因为某些操作会影响其值,并且该值在每次调用时都会保持不变。 IE。当您的应用程序的另一部分,甚至另一个应用程序设置当前路径时,此值将在下次使用。要设置当前路径,使用通用对话框浏览某个文件就足够了。

    在你的情况下,我会尝试

    • 通过从已知文件夹之一派生来明确指定路径(例如,用户的应用程序路径 - 查找 Environment.GetFolderPathEnvironment.SpecialFolder

    • 解析相对于您的 Dll 程序集路径的路径。

    要查找myType 的组装路径,您可以使用以下代码:

    String strPath = System.IO.Path.GetDirectoryName(typeof(myType).Assembly.CodeBase);
    

    在任何一种情况下,您都应该考虑到,在较新的 Windows 操作系统中,用户没有对系统驱动器所有路径的写入权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2019-06-19
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2015-11-13
      相关资源
      最近更新 更多